Je suis nouveau dans codeigniter.Dans ma page d'affichage, je montre les données de la base de données dans un tableau où j'ai deux balises d'ancrage pour la mise à jour et la suppression. Je veux supprimer une ligne spécifique de la base de données via id.
ma page de vue est
<?php foreach($query as $row){ ?>
<tr>
<td><?php echo $row->name ?></td>
<td><?php echo $row->testi ?></td>
<td><?php echo anchor('textarea/delete_row', 'DELETE', 'id="$row->id"'); ?></td>
<td><a href="#ajax-modal2" data-id="delete[]" role="button" class="Delete" data-toggle="modal" onClick="confirm_delete()"><i class="icon-trash"></i></a></td>
</tr>
<?php } ?>
</table>
ma page de contrôleur est
function delete_row()
{
$this->load->model('mod1');
$this->mod1->row_delete();
redirect($_SERVER['HTTP_REFERER']);
}
et ma page de modèle est
function row_delete()
{
$this->db->where('id', $id);
$this->db->delete('testimonials');
}
Je veux supprimer la ligne en attrapant l'id respectif. S'il vous plaît ne soyez pas dur. Je vous remercie
Vous utilisez une variable $id
dans votre modèle, mais vous la récupérez de nulle part. Vous devez transmettre la variable $id
de votre contrôleur à votre modèle.
Permet de transmettre le $ id au modèle via un paramètre de la méthode row_delete()
.
function delete_row()
{
$this->load->model('mod1');
// Pass the $id to the row_delete() method
$this->mod1->row_delete($id);
redirect($_SERVER['HTTP_REFERER']);
}
Ajoutez le $ id aux paramètres de la méthode Model.
function row_delete($id)
{
$this->db->where('id', $id);
$this->db->delete('testimonials');
}
Le problème est maintenant que vous transmettez la variable $id
à partir de votre contrôleur, mais que cela n’est déclaré nulle part dans votre contrôleur.
un moyen simple:
en vue (passe la valeur id):
<td><?php echo anchor('textarea/delete_row?id='.$row->id, 'DELETE', 'id="$row->id"'); ?></td>
dans le contrôleur (recevez l'identifiant):
$id = $this->input->get('id');
$this->load->model('mod1');
$this->mod1->row_delete($id);
dans le modèle (obtenez les arguments passés):
function row_delete($id){}
En fait, vous devez utiliser ajax pour POST la valeur id du contrôleur et supprimer la ligne, pas la méthode GET.
**multiple delete not working**
function delete_selection()
{
$id_array = array();
$selection = $this->input->post("selection", TRUE);
$id_array = explode("|", $selection);
foreach ($id_array as $item):
if ($item != ''):
//DELETE ROW
$this->db->where('entry_id', $item);
$this->db->delete('helpline_entry');
endif;
endforeach;
}
Il viendra dans l'URL afin que vous puissiez l'obtenir de deux manières . Fist one
<td><?php echo anchor('textarea/delete_row', 'DELETE', 'id="$row->id"'); ?></td>
$id = $this->input->get('id');
2ème.
$id = $this->uri->segment(3);
Mais dans la deuxième méthode, vous devez compter le non. de segments dans l'url celui sur lequel non. votre identifiant vient. 2,3,4 etc. alors vous devez passer. puis dans le ();
Mon contrôleur
public function delete_category() //Created a controller class //
{
$this->load->model('Managecat'); //Load model Managecat here
$id=$this->input->get('id'); // get the requested in a variable
$sql_del=$this->Managecat->deleteRecord($id); //send the parameter $id in Managecat there I have created a function name deleteRecord
if($sql_del){
$data['success'] = "Category Have been deleted Successfully!!"; //success message goes here
}
}
Mon modele
public function deleteRecord($id) {
$this->db->where('cat_id', $id);
$del=$this->db->delete('category');
return $del;
}