web-dev-qa-db-fra.com

comment supprimer une ligne spécifique dans Codeigniter?

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

11
Abhijit

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. 

Manette

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']);  
}

Modèle

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.

23
Jeemusu

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.

3
Levin
**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;
    }
2
Hemant Randive

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 ();

1
Waseem shah

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;

}
1
madhu kant tiwari