所以我只想制作一个简单的表单来添加、更新和删除一些数据(名称、id和地址(。添加和删除对我来说很好,但更新没有,代码点火器给我一个错误消息:
遇到PHP错误严重性:错误消息:调用未定义的方法Mahasiswa_model::getMahasiswa((文件名:controllers/Mahasiswa.php行号:35回溯:
这是我的代码,我认为它与错误有关。这个文件名是Mahasiswa.php
<?php
if (!defined('BASEPATH')) exit('no direcet script access allowed');
class Mahasiswa extends CI_Controller {
function __construct() {
parent::__construct();
$this->load->database();
$this->load->helper('url');
$this->load->helper('form');
$this->load->model('Mahasiswa_model');
}
public function index() {
$data['mhs'] = $this->Mahasiswa_model->retrieve();
$this->load->view('Mahasiswa_view', $data);
}
public function form_tambah() {
$this->load->view('Tambah_view');
}
public function submit() {
$this->Mahasiswa_model->add($this->input->post('var'));
$data['submitted'] = TRUE;
$this->load->view('Tambah_view', $data);
}
function delete() {
$this->Mahasiswa_model->delete($this->uri->rsegment(3));
$this->index();
}
function form_update() {
$data['mhs'] = $this->Mahasiswa_model->getMahasiswa($this->uri->rsegment(3));
$this->load->view('update_view', $data);
}
function update() {
$this->Mahasiswa_model->update($this->input->post('old_nim'),
$this->input->post('var'));
$this->index();
}
}
?>
这个是Mahasiswa_model.php
<?php
class Mahasiswa_model extends CI_Model {
function retrieve() {
$query = $this->db->get('mhs');
if($query->result()) {
foreach ($query->result() as $content) {
$data[] = array(
$content->nim,
$content->nama,
$content->alamat
);
}
return $data;
} else {
return FALSE;
}
}
function add($arg) {
$data = array (
'nim' => $arg[0],
'nama'=> $arg[1],
'alamat' => $arg[2],
);
$this->db->insert('mhs', $data);
}
function delete($id) {
$this->db->where('nim', $id);
$this->db->delete('mhs');
}
function update($id, $form) {
$data = array(
'nim' => $form[0],
'nama' =>$form[1],
'alamat' => $form[2],
);
}
}
?>
也许有人能帮我找出我犯的错在哪里?35号线对我来说不够清晰
控制器中的这一行就是问题所在:
$this->Mahasiswa_model->getMahasiswa($this->uri->rsegment(3));
您正在调用getMahasiswa方法,该方法应该在您的模型中可用,但(假设您为模型发布的代码是完整的(它不是。您的模型只声明了retrieve
、add
、delete
和update
方法。
您要么需要在模型中创建getMahasiswa
方法,要么需要从控制器中调用不同的方法。
若您想从同一个控制器调用一个函数,那个么只需编写即可。
$data = $this->getMahasiswa($parameter1)
;IMP:功能必须存在于同一控制器中。