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对象类型判断
Aug 27 PHP
DedeCMS dede_channeltype表字段注释
Apr 07 PHP
PHP编码规范之注释和文件结构说明
Jul 09 PHP
php垃圾代码优化操作代码
Aug 05 PHP
解析php安全性问题中的:Null 字符问题
Jun 21 PHP
百度站点地图(百度sitemap)生成方法分享
Jan 09 PHP
php的ajax简单实例
Feb 27 PHP
使用CodeIgniter的类库做图片上传
Jun 12 PHP
PHP解码unicode编码的中文字符代码分享
Aug 13 PHP
详解PHP匿名函数与注意事项
Mar 29 PHP
php反射类ReflectionClass用法分析
May 12 PHP
php版微信支付api.mch.weixin.qq.com域名解析慢原因与解决方法
Oct 12 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优于Node.js的五大理由分享
2012/09/15 PHP
php之Memcache学习笔记
2013/06/17 PHP
试用php中oci8扩展
2015/06/18 PHP
ThinkPHP V2.2说明文档没有说明的那些事实例小结
2015/07/01 PHP
php获取远程文件大小
2015/10/20 PHP
wordpress网站转移到本地运行测试的方法
2017/03/15 PHP
PHP使用PDO创建MySQL数据库、表及插入多条数据操作示例
2019/05/30 PHP
基于Web标准的UI组件 — 树状菜单(2)
2006/09/18 Javascript
Ext.MessageBox工具类简介
2009/12/10 Javascript
使用jquery实现图文切换效果另加特效
2013/01/20 Javascript
jquery ajax 局部无刷新更新数据的实现案例
2014/02/08 Javascript
一个简单的全屏图片上下打开显示网页效果示例
2014/07/08 Javascript
Javascript中获取对象的原型对象的方法小结
2015/02/25 Javascript
浅谈JavaScript正则表达式分组匹配
2015/04/10 Javascript
jquery实现弹出层登录和全屏层注册特效
2015/08/28 Javascript
如何用js实现鼠标向上滚动时浮动导航
2016/07/18 Javascript
Javascript中indexOf()和lastIndexOf应用方法实例
2016/08/24 Javascript
weex里Vuex state使用storage持久化详解
2017/09/09 Javascript
js 倒计时(高效率服务器时间同步)
2017/09/12 Javascript
axios对请求各种异常情况处理的封装方法
2018/09/25 Javascript
vue中利用Promise封装jsonp并调取数据
2019/06/18 Javascript
jQuery实现手风琴效果(蒙版)
2020/01/11 jQuery
JavaScript异步操作的几种常见处理方法实例总结
2020/05/11 Javascript
Python的词法分析与语法分析
2013/05/18 Python
django 通过ajax完成邮箱用户注册、激活账号的方法
2018/04/17 Python
selenium+python截图不成功的解决方法
2019/01/30 Python
CSS3 倾斜的网页图片库实例教程
2009/11/14 HTML / CSS
HTML5 视频播放(video),JavaScript控制视频的实例代码
2018/10/08 HTML / CSS
Manduka官网:瑜伽垫、瑜伽毛巾和服装
2018/07/02 全球购物
单身联谊活动方案
2014/01/29 职场文书
新学期决心书
2014/03/11 职场文书
霸气队列口号
2014/06/18 职场文书
学校体育节班级口号
2015/12/25 职场文书
php字符串倒叙
2021/04/01 PHP
go语言中json数据的读取和写出操作
2021/04/28 Golang
鲲鹏 CentOS 7 安装Python3.7
2022/05/11 Servers