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 23 PHP
PHP学习之正则表达式
Apr 17 PHP
PHP批量上传图片的具体实现方法介绍.
Feb 26 PHP
php5.2 Json不能正确处理中文、GB编码的解决方法
Mar 28 PHP
使用php转义输出HTML到JavaScript
Mar 27 PHP
PHP模糊查询的实现方法(推荐)
Sep 06 PHP
Laravel框架使用Seeder实现自动填充数据功能
Jun 13 PHP
PHP+mysql实现的三级联动菜单功能示例
Feb 15 PHP
微信公众平台开发教程③ PHP实现微信公众号支付功能图文详解
Apr 10 PHP
PHP中strtr与str_replace函数运行性能简单测试示例
Jun 22 PHP
laravel框架使用极光推送消息操作示例
Feb 15 PHP
如何使用php生成zip压缩包
Apr 21 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
一些使用频率比较高的php函数
2008/10/03 PHP
ajax+php打造进度条 readyState各状态
2010/03/20 PHP
php使用qr生成二维码的示例分享
2014/01/20 PHP
PHP加密解密实例分析
2015/12/25 PHP
php与阿里云短信接口接入操作案例分析
2020/05/27 PHP
laravel admin实现分类树/模型树的示例代码
2020/06/10 PHP
JavaScript 字符编码规则
2009/05/04 Javascript
用JQuery 实现AJAX加载XML并解析的脚本
2009/07/25 Javascript
Javascript的匿名函数小结
2009/12/31 Javascript
js prototype截取字符串函数
2010/04/01 Javascript
深入理解javascript的执行顺序
2014/04/04 Javascript
jQuery中prependTo()方法用法实例
2015/01/08 Javascript
AngularJS快速入门
2015/04/02 Javascript
Javascript实现的Map集合工具类完整实例
2015/07/31 Javascript
JQuery实现Ajax加载图片的方法
2015/12/24 Javascript
图片旋转、鼠标滚轮缩放、镜像、切换图片js代码
2020/12/13 Javascript
javascript类型系统——undefined和null全面了解
2016/07/13 Javascript
ES6概念 ymbol.for()方法
2016/12/25 Javascript
Bootstrap入门教程一Hello Bootstrap初识
2017/03/02 Javascript
angular1.x ui-route传参的三种写法小结
2018/08/31 Javascript
JavaScript实现小球沿正弦曲线运动
2020/09/07 Javascript
使用webpack搭建vue环境的教程详解
2019/12/31 Javascript
[02:34]2016完美“圣”典风云人物:BurNIng专访
2016/12/10 DOTA
Python模块学习 datetime介绍
2012/08/27 Python
python监控键盘输入实例代码
2018/02/09 Python
python smtplib模块实现发送邮件带附件sendmail
2018/05/22 Python
python将txt文件读入为np.array的方法
2018/10/30 Python
浅谈python编译pyc工程--导包问题解决
2019/03/20 Python
CentOS7安装Python3的教程详解
2019/04/10 Python
python字典的setdefault的巧妙用法
2019/08/07 Python
python实现可下载音乐的音乐播放器
2020/02/25 Python
软件配置管理有什么好处
2015/04/15 面试题
商场消防安全责任书
2014/07/29 职场文书
通知范文怎么写
2015/04/16 职场文书
教师年度考核自我评鉴
2015/08/11 职场文书
护士旷工检讨书
2015/08/15 职场文书