J'essaie de mettre à jour une table où l'id de la ligne est entré et le titre est sélectionné via une liste déroulante, mais j'ai deux problèmes. Premièrement, je ne sais pas comment passer les données au modèle, et le deuxième problème est la mise à jour de la table à l'aide de l'enregistrement actif.
classe de contrôleur
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);
}
}
?>
classe de modèle
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;
}
}
?>
vue
<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;
}
La requête d'enregistrement actif est similaire à
"update $table_name set title='$title' where emp_no=$id"
Dans your_controller, écrivez ceci ...
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...
}
}
Alors que dans votre_modèle ...
public function update_title($data)
{
$this->db->set('table_title',$data['title'])
->where('table_id',$data['table_id'])
->update('your_table');
}
Cela fonctionnera bien ...
Comment mettre à jour dans codeignitor?
chaque fois que vous souhaitez mettre à jour le même statut avec plusieurs lignes, vous utilisez where_in, où ou si vous souhaitez modifier, seul un enregistrement pouvant être utilisé où.
ci-dessous est mon code
$conditionArray = array(1, 3, 4, 6);
$this->db->where_in("ip_id", $conditionArray);
$this->db->update($this->table, array("status" => 'active'));
sa fonctionne parfaitement.
Dans la documentation codeigniter, si vous mettez à jour un champ spécifique, faites simplement ceci
$data = array(
'yourfieldname' => value,
'name' => $name,
'date' => $date
);
$this->db->where('yourfieldname', yourfieldvalue);
$this->db->update('yourtablename', $data);