ThinkPHP删除栏目(实现批量删除栏目)


Posted in PHP onJune 21, 2017

前段时间发表了一个删除栏目的随笔,当时实现的功能是删除一条信息,这次来实现一下批量删除栏目。

我们需要达到的是这样一个效果:

ThinkPHP删除栏目(实现批量删除栏目)

选中批量删除按钮后可以选中所有该页面的栏目,这个是前端页面的实现,在这里就不多说了,我们直接进入正题:批量删除的功能。

1.前端页面这里也有一个小小的点,就是选择框的name值应给给他赋值为一个id的数组,value值为该栏目的id。

2.我们在控制器中单独写一个批量删除的方法

public function privilege_bdel(){
  $ids = I('ids');
  $pri = D('privilege');
  $ids = implode(',', $ids);
  if($ids){
   if($pri->delete($ids)){
    $this->success('批量删除栏目成功!',U('Privilege/privilege_lst'));
   }else{
    $this->error('批量删除栏目失败,请重试!');
   }
  }else{
   $this->error('未选中任何内容,请重试!');
  }
 }

这里要将传过来的id数组转化为以逗号分隔的字符串如:1,2,3,这样可以直接进行delete操作。

ThinkPHP删除栏目(实现批量删除栏目)

这就是我们dump出来options的结果,这条也是我们用来判断删除时是单个删除还是批量删除的依据,如果options[where][id]是一个数组的话,则说明进行的是批量删除,否则就是单个删除。

3.在模型中对删除前构造函数的修改

public function _before_delete($options){
  //批量删除
  if(is_array($options['where']['id'])){
   $arr = explode(',', $options['where']['id'][1]);
   $sonpri = array();
   foreach ($arr as $k => $v) {
    $sonpri2 = $this->childid($v);
    $sonpri = array_merge($sonpri,$sonpri2);
   }
   $sonpri = array_unique($sonpri);
   $chilrenids = implode(',', $sonpri);
  }else{//单个删除
   $chilrenids =$this->childid($options['where']['id']);
   $chilrenids = implode(',', $chilrenids);
  }
  if($chilrenids){
   $this->execute("delete from ed_privilege where id in($chilrenids)");
  }
 }

在这里我们写出批量删除的代码(单个删除之前已经写过,不再提)

将传过来的字符串转化为不带逗号的数组形式存在$arr中,建立一个空数组$sonpri,然后foreach遍历,这里先查找出所有的子栏目id(会用childid函数),存入$sonpri2数组中 ,再将$sonpri和$sonpri2合并为一个数组,使用array_merge()函数完成,这样我们才算是获取到了所有子栏目的id,但是我们所获取的id组中,会出现许多重复的id,所以这里我们还要进行去重的操作,使用array_unique()函数。最后再进行一次数组的拆分,得到id字符串,再进行删除就大功告成了。

以上这篇ThinkPHP删除栏目(实现批量删除栏目)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP树的代码,可以嵌套任意层
Oct 09 PHP
一个php作的文本留言本的例子(三)
Oct 09 PHP
PHP 开源AJAX框架14种
Aug 24 PHP
linux下使用ThinkPHP需要注意大小写导致的问题
Aug 02 PHP
九个你必须知道而且又很好用的php函数和特点
Aug 08 PHP
采用header定义为文件然后readfile下载(隐藏下载地址)
Jan 31 PHP
php实现批量压缩图片文件大小的脚本
Jul 04 PHP
PHP正则匹配日期和时间(时间戳转换)的实例代码
Dec 14 PHP
Yii框架弹出窗口组件CJuiDialog用法分析
Jan 07 PHP
PHP面向对象五大原则之单一职责原则(SRP)详解
Apr 04 PHP
PHP addslashes()函数讲解
Feb 03 PHP
PHP的curl函数的用法总结
Feb 14 PHP
php基于SQLite实现的分页功能示例
Jun 21 #PHP
PHP面向对象之领域模型+数据映射器实例(分析)
Jun 21 #PHP
PHP基于PDO实现的SQLite操作类【包含增删改查及事务等操作】
Jun 21 #PHP
老生常谈PHP面向对象之标识映射
Jun 21 #PHP
PHP封装的PDO数据库操作类实例
Jun 21 #PHP
PHP基于ORM方式操作MySQL数据库实例
Jun 21 #PHP
php 猴子摘桃的算法
Jun 20 #PHP
You might like
一个用php3编写的简单计数器
2006/10/09 PHP
在PHP里得到前天和昨天的日期的代码
2007/08/16 PHP
PHP 中执行排序与 MySQL 中排序
2009/04/21 PHP
php导出word文档与excel电子表格的简单示例代码
2014/03/08 PHP
Linux中用PHP判断程序运行状态的2个方法
2014/05/04 PHP
php中实现获取随机数组列表的自定义函数
2015/04/02 PHP
ThinkPHP3.2.1图片验证码实现方法
2016/08/19 PHP
用JavaScript脚本实现Web页面信息交互
2006/10/11 Javascript
按给定几率进行随机抽取的js代码
2010/12/28 Javascript
javascript 延迟加载技术(lazyload)简单实现
2011/01/17 Javascript
JavaScript 原型继承之构造函数继承
2011/08/26 Javascript
js自动下载文件到本地的实现代码
2013/04/28 Javascript
javascript实现Table排序的方法
2015/05/15 Javascript
Bootstrap Table的使用总结
2016/10/08 Javascript
jQuery居中元素scrollleft计算方法示例
2017/01/16 Javascript
bootstrap modal+gridview实现弹出框效果
2017/08/15 Javascript
解析Vue.js中的组件
2018/02/02 Javascript
在Vue项目中使用d3.js的实例代码
2018/05/01 Javascript
layui动态加载多表头的实例
2019/09/05 Javascript
openlayers 3实现车辆轨迹回放
2020/09/24 Javascript
python 专题九 Mysql数据库编程基础知识
2017/03/16 Python
python使用参数对嵌套字典进行取值的方法
2019/04/26 Python
python 用所有标点符号分隔句子的示例
2019/07/15 Python
python实现几种归一化方法(Normalization Method)
2019/07/31 Python
python mqtt 客户端的实现代码实例
2019/09/25 Python
python使用socket 先读取长度,在读取报文内容示例
2019/09/26 Python
实习销售业务员自我鉴定
2013/09/21 职场文书
学生个人求职自荐信格式
2013/09/23 职场文书
房地产员工找工作的自我评价
2013/11/15 职场文书
自荐书范文
2013/12/08 职场文书
金融管理毕业生求职信
2014/03/03 职场文书
创建文明学校实施方案
2014/03/11 职场文书
会计简历自我评价
2015/03/10 职场文书
创业分两种人:那么哪些适合创业?,哪些适合不适合创业呢?
2019/08/23 职场文书
创业计划书之小型广告公司
2019/10/22 职场文书
MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函数的使用详解
2021/06/26 MySQL