所以我只想简单地添加,更新和删除一些数据(名称,ID和地址)。添加和删除对我来说很好用,但更新不起作用,codeigniter给我一个错误消息:
遇到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行对我来说不够清晰
答案 0 :(得分:1)
控制器中的这一行是问题所在:
$this->Mahasiswa_model->getMahasiswa($this->uri->rsegment(3));
您正在调用应该在模型中可用的getMahasiswa方法,但是(假设您为模型发布的代码是完整的)不是。您的模型仅声明了retrieve
,add
,delete
和update
方法。
您要么需要在模型中创建getMahasiswa
方法,要么需要从控制器中调用其他方法。
如果要从同一控制器调用函数,则只需编写即可。
$data = $this->getMahasiswa($parameter1)
;
IMP:功能必须存在于同一控制器中。