Как удалить определенную строку в codeigniter?

Я новичок в codeigniter. На моей странице просмотра я показываю данные из базы данных в таблице, где у меня есть два якорных тега для обновления и удаления. Я хочу удалить определенную строку из базы данных с помощью id.

моя страница просмотра

 <?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>

моя страница контроллера

function delete_row()
{

   $this->load->model('mod1');
   $this->mod1->row_delete();
   redirect($_SERVER['HTTP_REFERER']);  
}

и моя страница модели

 function row_delete()
  {

      $this->db->where('id', $id);
      $this->db->delete('testimonials'); 
  }

Я хочу удалить строку, поймав соответствующий идентификатор. Пожалуйста, не будьте суровыми. спасибо

Ответ 1

В вашей модели используется переменная $id, но вы вытаскиваете ее из ниоткуда. Вам нужно передать переменную $id с вашего контроллера на вашу модель.

Controller

Позволяет передать $id модели с помощью параметра метода 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']);  
}

Model

Добавьте параметр $id к параметрам методов модели.

function row_delete($id)
{
   $this->db->where('id', $id);
   $this->db->delete('testimonials'); 
}

Теперь проблема заключается в том, что вы передаете переменную $id из своего контроллера, но она не объявлена ​​нигде в вашем контроллере.

Ответ 2

простой способ:

(передайте значение id):

<td><?php echo anchor('textarea/delete_row?id='.$row->id, 'DELETE', 'id="$row->id"'); ?></td>

в контроллере (получить идентификатор):

$id = $this->input->get('id');
$this->load->model('mod1');
$this->mod1->row_delete($id);

в модели (получить переданные аргументы):

function row_delete($id){}

Собственно, вы должны использовать ajax для POST для значения id для контроллера и удалить строку, а не GET.

Ответ 3

**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;
    }

Ответ 4

Он появится в URL-адресе, чтобы вы могли получить его двумя способами. Кулак

<td><?php echo anchor('textarea/delete_row', 'DELETE', 'id="$row->id"'); ?></td>
$id = $this->input->get('id');

2-й.

$id = $this->uri->segment(3);

Но во втором методе вы должны считать no. сегментов в URL, на которых нет. Иди сюда. 2,3,4 и т.д., Тогда вы должны пройти. затем в();

Ответ 5

Мой контроллер

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 

         }

    }

Моя модель

public function deleteRecord($id) {

    $this->db->where('cat_id', $id);
    $del=$this->db->delete('category');   
    return $del;

}