13

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

我想通过捕获相应的 id 来删除该行。请不要苛刻。谢谢你

4

5 回答 5

24

你在你的模型中使用了一个$id变量,但是你是从无到有的。您需要将$id变量从控制器传递到模型。

控制器

让我们通过row_delete()方法的参数将 $id 传递给模型。

function delete_row()
{
   $this->load->model('mod1');

   // Pass the $id to the row_delete() method
   $this->mod1->row_delete($id);


   redirect($_SERVER['HTTP_REFERER']);  
}

模型

将 $id 添加到模型方法参数。

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

现在的问题是您$id从控制器传递变量,但它没有在控制器的任何地方声明。

于 2013-10-31T07:56:34.157 回答
3

一个简单的方法:

在视图中(传递 id 值):

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

在控制器中(接收 id):

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

在模型中(获取传递的参数):

function row_delete($id){}

实际上,您应该使用 ajax 将 id 值发布到控制器并删除行,而不是 GET。

于 2013-10-31T07:57:08.280 回答
2
**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;
    }
于 2015-05-06T07:32:25.627 回答
2

它将出现在 url 中,因此您可以通过两种方式获取它。 拳头一

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

第 2 个。

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

但在第二种方法中,你必须数数。url 中的段在哪个没有。你的身份证来了 2,3,4等然后你必须通过。然后在 ();

于 2017-01-08T20:20:33.470 回答
1

我的控制器

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;

}
于 2017-09-12T11:39:24.877 回答