codeigniter - Call to undefined method CI_DB_mysqli_driver::insert_item() in D:\wamp\www\registration\application\controllers\pages.php on line 37 -
i new ci , have started code. making simple contact form , got error.
call undefined method ci_db_mysqli_driver::insert_item() in d:\wamp\www\registration\application\controllers\pages.php on line 37
here code of controller.php
<?php class pages extends ci_controller { public function view($page = 'home'){ if ( ! file_exists(apppath.'/views/pages/'.$page.'.php')) { // whoops, don't have page that! show_404(); } $data['title'] = ucfirst($page); // capitalize first letter $this->load->model('user_model'); //$this->load->view('templates/header', $data); $this->load->view('pages/'.$page, $data); //$this->load->view('templates/footer', $data);} public function data_submitted(){ $name = $this->input->get('name'); $email = $this->input->get('email'); $mobile = $this->input->get('mobile'); $address = $this->input->get('address'); $gender = $this->input->get('gender'); $data1 = array( 'name'=> $name, 'email'=>$email, 'mobile'=>$mobile, 'address'=>$address, 'gender'=>$gender ); //$this->db->set($data1); $this->user_model->insert($data1); } } ?>
and here full code of model
<?php class user_model extends ci_model { private $item; function __construct(){ /* call model constructor */ parent::__construct(); } function insert_item($item){ /*$this->table = "contact"; $this->item = $item; */ //$dbconnect = $this->load->database(); $this->db->insert("contact", $item);} }
your controller referencing db
library:
$this->db->insert_item($data1);
however, insert_item()
method exists in model!
it should this:
$this->load->model('my_model'); $this->my_model->insert_item($data1);
edit here take account controller code.
assuming user_model
has been loaded, , user_model
contains method insert_item()
want change
$this->user_model->insert($data1);
to
$this->user_model->insert_item($data1);
having seen complete controller , model code...
your controller:
you loading user model in view()
method, can see you're not using it. using model in data_submitted()
never loaded there. using insert
rather insert_item()
. here corrected code controller.
public function view($page = 'home') { if ( ! file_exists(apppath.'/views/pages/'.$page.'.php')) { // whoops, don't have page that! show_404(); } $data['title'] = ucfirst($page); // capitalize first letter //$this->load->view('templates/header', $data); $this->load->view('pages/'.$page, $data); //$this->load->view('templates/footer', $data); } public function data_submitted(){ $name = $this->input->get('name'); $email = $this->input->get('email'); $mobile = $this->input->get('mobile'); $address = $this->input->get('address'); $gender = $this->input->get('gender'); $data1 = array( 'name'=> $name, 'email'=>$email, 'mobile'=>$mobile, 'address'=>$address, 'gender'=>$gender ); $this->load->model('user_model'); $this->user_model->insert_item($data1); }
your model:
there seemed code did absolutely nothing. have stripped out , following code should work.
class user_model extends ci_model { function __construct(){ /* call model constructor */ parent::__construct(); } public function insert_item($item){ $this->db->insert("contact", $item); } }
as side note - can see how easy code read now? make sure use proper indentation massively increases readability of code.
Comments
Post a Comment