Я пытаюсь обновить таблицу, в которой введен идентификатор строки, а название выбрано в раскрывающемся списке, но у меня есть две проблемы. Во-первых, я не уверен, как передать данные модели, а вторая проблема – фактически обновить таблицу с использованием активной записи.
класс контроллера
class Update extends CI_Controller { public function __construct() { parent::__construct(); //$this->load->model('addmodel'); //$this->load->helper('form'); } public function index() { $this->load->view('updview'); } public function updtitle() { $data = array( 'id' => $this->input->post('id'), 'title' => $this->input->post('title') ); //$data1['data'] = $data; $data1['data'] = $this->updmodel->upddata($data); $this->load->view('updview', $data1); } } ?>
модельный класс
class Updmodel extends CI_Model { // model constructor function function __construct() { parent::__construct(); // call parent constructor $this->load->database(); } public function upddata($data) { $this->db->where('emp_no', $data['id']); $this->db->update('title', $data['title']); return; } } ?>
Посмотреть
<form action="http://localhost/ecwm604/index.php/update/updtitle" method="POST"> employee id: <input type=text name="id"><br /> change title to: <select name="title"> <option value="Assistant Engineer">Assistant Engineer</option> <option value="Engineer">Engineer</option> <option value="Senior Engineer">Senior Engineer</option> <option value="Senior Staff">Senior Staff</option> <option value="Staff">Staff</option> </select><br /> <input type="submit" value="submit"/> <br /> <?php print_r($data); //echo $data['title']; ?> </body> </html>
public function updtitle() { $data = array( 'table_name' => 'your_table_name_to_update', // pass the real table name 'id' => $this->input->post('id'), 'title' => $this->input->post('title') ); $this->load->model('Updmodel'); // load the model first if($this->Updmodel->upddata($data)) // call the method from the model { // update successful } else { // update not successful } }
public function upddata($data) { extract($data); $this->db->where('emp_no', $id); $this->db->update($table_name, array('title' => $title)); return true; }
Запрос активной записи похож на
"update $table_name set title='$title' where emp_no=$id"
В вашем_controller напишите это …
public function update_title() { $data = array ( 'table_id' => $this->input->post('table_id'), 'table_title' => $this->input->post('table_title') ); $this->load->model('your_model'); // First load the model if($this->your_model->update_title($data)) // call the method from the controller { // update successful... } else { // update not successful... } }
Пока в вашем_модели …
public function update_title($data) { $this->db->set('table_title',$data['title']) ->where('table_id',$data['table_id']) ->update('your_table'); }
Это будет хорошо работать …
Вы также можете попробовать следующее:
В вашем контроллере:
public function updtitle(){ $id = $this->input->post("id"); $title= $this->input->post("title"); $titledata = array( 'title' => $title ); $this->db->where('id', $id); $this->db->update('title', $titledata); }