行のIDが入力され、ドロップダウンリストからタイトルが選択されているテーブルを更新しようとしていますが、2つの問題があります。まず、データをモデルに渡す方法がわかりません。2番目の問題は、実際にアクティブレコードを使用してテーブルを更新することです。
コントローラクラス
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"
Your_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...
}
}
Your_modelにいる間...
public function update_title($data)
{
$this->db->set('table_title',$data['title'])
->where('table_id',$data['table_id'])
->update('your_table');
}
これは正常に動作します...
Codeignitorで更新するには?
複数の行で同じステータスを更新したい場合はいつでもwhere_in insteamを使用するか、単一のレコードのみを変更したい場合はwhereを使用できます。
以下は私のコードです
$conditionArray = array(1, 3, 4, 6);
$this->db->where_in("ip_id", $conditionArray);
$this->db->update($this->table, array("status" => 'active'));
その完璧な動作。
Codeigniter docで特定のフィールドを更新する場合はこれを実行してください
$data = array(
'yourfieldname' => value,
'name' => $name,
'date' => $date
);
$this->db->where('yourfieldname', yourfieldvalue);
$this->db->update('yourtablename', $data);