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 mail 通过Windows的SMTP发送邮件失败的解决方案
May 27 PHP
基于php-fpm 参数的深入理解
Jun 03 PHP
PHP中的多行字符串传递给JavaScript的两种方法
Jun 19 PHP
ThinkPHP跳转页success及error模板实例教程
Jul 17 PHP
简单谈谈php中ob_flush和flush的区别
Nov 27 PHP
php给图片加文字水印
Jul 31 PHP
详解PHP+AJAX无刷新分页实现方法
Nov 03 PHP
php对文件夹进行相关操作(遍历、计算大小)
Nov 04 PHP
thinkphp3.x中display方法及show方法的用法实例
May 19 PHP
PHP数据库表操作的封装类及用法实例详解
Jul 12 PHP
Yii 2中的load()和save()示例详解
Aug 03 PHP
用PHP的反射实现委托模式的讲解
Mar 22 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
一拳超人中怪人协会钦定! S级别最强四人!
2020/03/02 日漫
PHP 数组基础知识小结
2010/08/20 PHP
ThinkPHP视图查询详解
2014/06/30 PHP
PHP使用trim函数去除字符串左右空格及特殊字符实例
2016/01/07 PHP
PHP调试的强悍利器之PHPDBG
2016/02/22 PHP
PHP带节点操作的无限分类实现方法详解
2016/11/09 PHP
4种Windows系统下Laravel框架的开发环境安装及部署方法详解
2020/04/06 PHP
javascript刷新父页面的各种方法汇总
2014/09/03 Javascript
js实现照片墙功能实例
2015/02/05 Javascript
javascript白色简洁计算器
2015/05/04 Javascript
JavaScript中判断函数、变量是否存在
2015/06/10 Javascript
jQuery中的ajax async同步和异步详解
2015/09/29 Javascript
完美实现bootstrap分页查询
2015/12/09 Javascript
easyui导出excel无法弹出下载框的快速解决方法
2016/11/10 Javascript
jQuery与JavaScript节点创建方法的对比
2016/11/18 Javascript
Angular.Js中过滤器filter与自定义过滤器filter实例详解
2017/05/08 Javascript
使用svg实现动态时钟效果
2018/07/17 Javascript
Vue作用域插槽slot-scope实例代码
2018/09/05 Javascript
详解Vue源码学习之双向绑定
2019/04/10 Javascript
云服务器部署Node.js项目的方法步骤(小白系列)
2020/03/23 Javascript
python django 访问静态文件出现404或500错误
2017/01/20 Python
Python实现简单网页图片抓取完整代码实例
2017/12/15 Python
在Python中pandas.DataFrame重置索引名称的实例
2018/11/06 Python
python自动化发送邮件实例讲解
2021/01/04 Python
GANT葡萄牙官方商店:拥有美国运动服传统的生活方式品牌
2018/10/18 全球购物
汽车维修与检测专业应届生求职信
2013/11/12 职场文书
贸易跟单员英文求职信
2014/04/19 职场文书
《风娃娃》教学反思
2014/04/19 职场文书
先进事迹演讲稿
2014/09/01 职场文书
2015年小学生新年寄语
2014/12/08 职场文书
走近毛泽东观后感
2015/06/04 职场文书
第一书记观后感
2015/06/08 职场文书
golang判断key是否在map中的代码
2021/04/24 Golang
刚学完怎么用Python实现定时任务,转头就跑去撩妹!
2021/06/05 Python
JPA 通过Specification如何实现复杂查询
2021/11/23 Java/Android
python+pyhyper实现识别图片中的车牌号思路详解
2022/12/24 Python