如何删除codeigniter中的特定行?

时间:2013-10-31 07:28:19

标签: php 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'); 
  }

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

5 个答案:

答案 0 :(得分:23)

您在模型中使用$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添加到Model方法参数中。

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

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

答案 1 :(得分: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);
模型中的

(获取传递的args):

function row_delete($id){}

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

答案 2 :(得分: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;
    }

答案 3 :(得分:1)

它会进入网址,所以你可以通过两种方式获得它。 拳头

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

第二个。

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

但是在第二种方法中,你必须计算一下。网址中没有的网段。你的身份来了。 2,3,4等你必须通过。然后在();

答案 4 :(得分: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;

}