You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CodeIgniter删除确认提示及数据软删除实现方案咨询

嘿,这需求很常见,咱们一步步来搞定CodeIgniter里的删除确认提示+软删除功能,分前端和后端两部分调整:

一、前端添加删除确认提示

打开你的index.php视图文件,找到删除按钮/链接的代码,给它加上onclick事件触发确认弹窗。比如原来的删除链接可能是这样:

<a href="<?php echo base_url('project/delete/'.$project['id']); ?>">删除</a>

改成带确认提示的版本:

<a href="<?php echo base_url('project/delete/'.$project['id']); ?>" onclick="return confirm('确定要删除这个项目吗?删除后将无法在列表中恢复哦!')">删除</a>

原理很简单:confirm()会弹出系统确认框,用户点取消时返回false,阻止链接跳转;点确定返回true,正常发起删除请求。

二、后端实现软删除逻辑

软删除的核心是标记数据为已删除,而非物理删除,所以需要调整数据库、模型和控制器:

1. 修改数据库表结构

给你的projects表新增一个标记字段,用来区分已删除和未删除的数据。执行以下SQL语句:

ALTER TABLE projects ADD COLUMN is_deleted TINYINT(1) NOT NULL DEFAULT 0 COMMENT '0=未删除,1=已删除';

2. 更新Project_model.php模型

  • 替换原来的物理删除方法,改成软删除(更新标记字段):
// 原来的delete方法可以保留或重命名,新增软删除方法
public function soft_delete($project_id) {
    $update_data = ['is_deleted' => 1];
    $this->db->where('id', $project_id);
    return $this->db->update('projects', $update_data);
}
  • 修改获取项目列表的方法,过滤掉已标记删除的数据:
public function get_all_projects() {
    // 只查询未删除的项目
    $this->db->where('is_deleted', 0);
    return $this->db->get('projects')->result_array();
}

3. 调整Project.php控制器

找到delete方法,把原来调用模型物理删除的代码,改成调用软删除方法:

public function delete($id) {
    // 调用软删除方法
    $this->project_model->soft_delete($id);
    // 删除后跳回列表页
    redirect('project/index');
}

如果需要更严谨,可以加个判断和提示:

public function delete($id) {
    if ($this->project_model->soft_delete($id)) {
        $this->session->set_flashdata('success', '项目已成功删除');
    } else {
        $this->session->set_flashdata('error', '删除失败,请重试');
    }
    redirect('project/index');
}
三、测试验证
  1. 点击列表页的删除按钮,会弹出确认提示框,取消操作不会改变数据;
  2. 确认删除后,前端列表中不再显示该项目,但数据库里的projects表中对应数据的is_deleted字段会变成1,数据依然保留;
  3. 如果后续需要恢复数据,只需要把is_deleted改回0即可。

内容的提问来源于stack exchange,提问作者Roxana Slj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 22:18:13