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
ajax缓存问题解决途径
Dec 06 PHP
火车采集器 免费版使出收费版本功能实现原理
Sep 17 PHP
php数据库连接时容易出错的特殊符号问题
Sep 01 PHP
php类声明和php类使用方法示例分享
Mar 29 PHP
php数组查找函数总结
Nov 18 PHP
解决PHP里大量数据循环时内存耗尽的方法
Oct 10 PHP
简单了解WordPress开发中update_option()函数的用法
Jan 11 PHP
php实现遍历文件夹的方法汇总
Mar 02 PHP
php redis实现文章发布系统(用户投票系统)
Mar 04 PHP
PHP观察者模式定义与用法实例分析
Mar 22 PHP
PHP Trait代码复用类与多继承实现方法详解
Jun 17 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实现递归无限级分类
2015/10/22 PHP
学习php设计模式 php实现门面模式(Facade)
2015/12/07 PHP
Laravel 连接(Join)示例
2019/10/16 PHP
JavaScript中的集合及效率
2010/01/08 Javascript
复制js对象方法(详解)
2013/07/08 Javascript
JS中如何设置readOnly的值
2013/12/25 Javascript
两个select多选模式的选项相互移动(示例代码)
2014/01/11 Javascript
javascript事件冒泡简单示例
2016/06/20 Javascript
完美实现八种js焦点轮播图(上篇)
2016/07/18 Javascript
js转html实体的方法
2016/09/27 Javascript
ComboBox(下拉列表框)通过url加载调用远程数据的方法
2017/08/06 Javascript
JavaScript函数重载操作实例浅析
2020/05/02 Javascript
Bootstrap告警框(alert)实现弹出效果和短暂显示后上浮消失的示例代码
2020/08/27 Javascript
openlayers4.6.5实现距离量测和面积量测
2020/09/25 Javascript
Python字符串转换成浮点数函数分享
2015/07/24 Python
python spyder中读取txt为图片的方法
2018/04/27 Python
Python常见字典内建函数用法示例
2018/05/14 Python
详谈Pandas中iloc和loc以及ix的区别
2018/06/08 Python
python实现电脑自动关机
2018/06/20 Python
python去掉 unicode 字符串前面的u方法
2018/10/21 Python
Python读取csv文件分隔符设置方法
2019/01/14 Python
详解python读取image
2019/04/03 Python
python-pyinstaller、打包后获取路径的实例
2019/06/10 Python
Python with用法:自动关闭文件进程
2019/07/10 Python
Windows下pycharm创建Django 项目(虚拟环境)过程解析
2019/09/16 Python
使用PyTorch训练一个图像分类器实例
2020/01/08 Python
Pyspark获取并处理RDD数据代码实例
2020/03/27 Python
python中strip(),lstrip(),rstrip()函数的使用讲解
2020/11/17 Python
让IE6、IE7、IE8支持CSS3的脚本
2010/07/20 HTML / CSS
CSS书写规范、顺序和命名规则
2014/03/06 HTML / CSS
html5教你做炫酷的碎片式图片切换 (canvas)
2017/07/28 HTML / CSS
介绍一下SOA和SOA的基本特征
2016/02/24 面试题
信息技术专业个人自我评价
2013/12/11 职场文书
失业者真诚求职信范文
2013/12/25 职场文书
优秀驾驶员先进事迹材料
2014/05/04 职场文书
keepalived + nginx 实现高可用方案
2022/12/24 Servers