使用CodeIgniter从数据库中删除

时间:2013-06-08 18:05:24

标签: php codeigniter

我想制作一个删除功能,但我不知道哪些步骤出错了?

这是文件模型:

function delete()
{
    $this->db->delete('ns_categories', array('cat_id' => $cat_id));     
}

控制器:

function delete()
{
    $this->cat_model->delete();
    $cat_id=$this->uri->segment(3);
    if($cat_id->delete()) return json_encode(array("success" => true));            
}

查看:

<td class="centeralign"><a class="deleterow" href="<?php echo anchor('admin/categories/delete' .<?php echo $row['cat_id']; ?>"><span class="icon-trash"></span></a></td>

请帮帮我。

3 个答案:

答案 0 :(得分:1)

你没有做任何正确的事,没有冒犯。这是一团糟。

查看:

你错过了正斜杠:

href="<?php echo 'admin/categories/delete' .<?php echo $row['cat_id']; ?>"
                                        ^^^

...但是你不会以这种方式使用anchor(),它会生成一个完整的链接。而且你已经嵌套了两个<?php echo ...真糟糕。这样做:

<a href="<?php echo base_url('admin/categories/delete/'.$row['cat_id']; ?>">

型号:

您尚未在模型的$cat_id函数中定义delete。另外,不要从模型返回json。这样做:

function delete($cat_id = null)
{
    return $this->db->delete('ns_categories', array('cat_id' => $cat_id));
}

控制器:

您正在调用delete作为$cat_id的方法,这是没有意义的,因为变量包含数字 - 而不是您可以调用方法的对象。你还必须回显/打印json,你应该设置json头。这样做:

function delete($cat_id = null) {
    $status = $this->cat_model->delete($cat_id);
    header('Content-type: application/json');
    echo json_encode(array("success" => $status));
}

您应该使用POST方法删除内容,否则人们可能会意外删除内容或执行<img src="delete/item/1">等愚蠢的伎俩

答案 1 :(得分:0)

从链接中删除额外的回显

<td class="centeralign">
    <a class="deleterow" href="<?php echo anchor('admin/categories/delete' . $row['cat_id']); ?>">
        <span class="icon-trash"></span>
    </a>
</td>

答案 2 :(得分:0)

在您的Controller删除功能中,您在调用模型的删除功能后获得了类别ID为什么?在您的模型函数中,您将获得$cat_id ??它应该是这样的

function Category_delete(){
$cat_id=$this->uri->segment(3);   
if($this->cat_model->delete($cat_id)) return json_encode(array("success" => true));            
}

在您的视图中,您再次打开了<?php,并且您在anchor href函数中使用anchor函数生成了完整的<a>标记,请参阅帮助者CI Helpers

的参考
<td class="centeralign"><a class="deleterow" href="<?php echo site_url('admin/categories/Category_delete/'.$row['cat_id']; ?>">
<span class="icon-trash"></span></a></td>

你应该重命名这些函数,因为delete可能是一个关键字,所以使用函数的普通名称