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加MYSQL服务器
Oct 09 PHP
PHP中的cookie
Nov 26 PHP
GBK的页面输出JSON格式的php函数
Feb 16 PHP
php设计模式 Observer(观察者模式)
Jun 26 PHP
php中批量替换文件名的实现代码
Jul 20 PHP
PHP运行模式的深入理解
Jun 03 PHP
基于php iconv函数的使用详解
Jun 09 PHP
PHP清除字符串中所有无用标签的方法
Dec 01 PHP
学习php设计模式 php实现建造者模式
Dec 07 PHP
Json_decode 解析json字符串为NULL的解决方法(必看)
Feb 17 PHP
Yii 2.0如何使用页面缓存方法示例
May 23 PHP
thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法
Sep 07 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
XAMPP安装与使用方法详细解析
2013/11/27 PHP
php使用array_search函数实现数组查找的方法
2015/06/12 PHP
开启PHP Static 关键字之旅模式
2015/11/13 PHP
js prototype 格式化数字 By shawl.qiu
2007/04/02 Javascript
JavaScript XML和string相互转化实现代码
2011/07/04 Javascript
30个让人兴奋的视差滚动(Parallax Scrolling)效果网站
2012/03/04 Javascript
Javascript实现真实字符串剩余字数提示的实例代码
2013/10/22 Javascript
javascript中的变量作用域以及变量提升详细介绍
2013/10/24 Javascript
倒记时60刷新网页的js代码
2014/02/18 Javascript
jQuery插件实现大图全屏图片相册
2015/03/14 Javascript
三分钟带你玩转jQuery.noConflict()
2016/02/15 Javascript
详解JS-- 浮点数运算处理
2016/11/28 Javascript
分享一个精简的vue.js 图片lazyload插件实例
2017/03/13 Javascript
js获取地址栏参数的两种方法
2017/06/27 Javascript
vue-router动态设置页面title的实例讲解
2018/08/30 Javascript
js限制input只能输入有效的数字(第一个不能是小数点)
2018/09/28 Javascript
浅谈高大上的微信小程序中渲染html内容—技术分享
2018/10/25 Javascript
element-ui table span-method(行合并)的实现代码
2018/12/20 Javascript
MockJs结合json-server模拟后台数据
2020/08/26 Javascript
python连接mysql调用存储过程示例
2014/03/05 Python
Python中统计函数运行耗时的方法
2015/05/05 Python
详解Python中的Cookie模块使用
2015/07/06 Python
以视频爬取实例讲解Python爬虫神器Beautiful Soup用法
2016/01/20 Python
浅谈django开发者模式中的autoreload是如何实现的
2017/08/18 Python
Python在图片中插入大量文字并且自动换行
2019/01/02 Python
提升Python程序性能的7个习惯
2019/04/14 Python
PyQt5 在label显示的图片中绘制矩形的方法
2019/06/17 Python
详解python中的模块及包导入
2019/08/30 Python
Python for i in range ()用法详解
2020/09/18 Python
解决python 在for循环并且pop数组的时候会跳过某些元素的问题
2020/12/11 Python
Puritan’s Pride(普丽普莱)官方网站:美国最大最全的保健品公司之一
2016/10/23 全球购物
Java里面如何把一个Array数组转换成Collection, List
2013/07/26 面试题
介绍一下如何优化MySql
2016/12/20 面试题
应届生面试求职信
2014/07/02 职场文书
2015年机关后勤工作总结
2015/05/26 职场文书
python使用torch随机初始化参数
2022/03/22 Python