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关联数组的10个操作技巧
Jan 21 PHP
php一些错误处理的方法与技巧总结
Aug 10 PHP
php cURL和Rolling cURL并发方式比较
Oct 30 PHP
PHP使用DirectoryIterator显示下拉文件列表的方法
Mar 13 PHP
PHP指定截取字符串中的中英文或数字字符的实例分享
Mar 18 PHP
FleaPHP框架数据库查询条件($conditions)写法总结
Mar 19 PHP
关于PHP文件的自动运行方法分析
May 13 PHP
yii2分页之实现跳转到具体某页的实例代码
Jun 02 PHP
php倒计时出现-0情况的解决方法
Jul 28 PHP
php实现评论回复删除功能
May 23 PHP
Laravel 解决composer相关操作提示php相关异常的问题
Oct 23 PHP
如何在Mac上通过docker配置PHP开发环境
May 29 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中strtotime函数用法详解
2014/11/15 PHP
PHP pthreads v3下worker和pool的使用方法示例
2020/02/21 PHP
javascript 面向对象 function类
2010/05/13 Javascript
jquery的ajax简单结构示例代码
2014/02/17 Javascript
什么是MEAN?JavaScript编程中的MEAN是什么意思?
2014/12/18 Javascript
js实现进度条的方法
2015/02/13 Javascript
JS脚本实现动态给标签控件添加事件的方法
2016/06/02 Javascript
好好了解一下Cookie(强烈推荐)
2016/06/14 Javascript
d3.js实现自定义多y轴折线图的示例代码
2018/05/30 Javascript
详解vue-router 初始化时做了什么
2018/06/11 Javascript
JQuery Ajax跨域调用和非跨域调用问题实例分析
2019/04/16 jQuery
通过js示例讲解时间复杂度与空间复杂度
2019/08/06 Javascript
vue-cli随机生成port源码的方法
2019/09/02 Javascript
Vue 构造选项 - 进阶使用说明
2020/08/14 Javascript
vite2.0+vue3移动端项目实战详解
2021/03/03 Vue.js
[05:31]DOTA2英雄梦之声_第08期_莉娜
2014/06/23 DOTA
解决PyCharm中光标变粗的问题
2017/08/05 Python
python3利用Dlib19.7实现人脸68个特征点标定
2018/02/26 Python
目前最全的python的就业方向
2018/06/05 Python
详解python中的time和datetime的常用方法
2019/07/08 Python
适合Python初学者的一些编程技巧
2020/02/12 Python
Python函数必须先定义,后调用说明(函数调用函数例外)
2020/06/02 Python
装上这 14 个插件后,PyCharm 真的是无敌的存在
2021/01/11 Python
葡萄牙航空官方网站:TAP Air Portugal
2019/10/31 全球购物
网络、C以及其他硬件方面的面试题
2016/08/23 面试题
css animation配合SVG制作能量流动效果
2021/03/24 HTML / CSS
低碳环保倡议书
2014/04/14 职场文书
十八大演讲稿
2014/05/22 职场文书
校庆标语集锦
2014/06/25 职场文书
红领巾广播站广播稿
2014/10/19 职场文书
中学生检讨书1000字
2014/10/28 职场文书
公司表扬稿范文
2015/05/05 职场文书
2016元旦晚会主持词
2015/07/01 职场文书
2015中学学校工作总结
2015/07/20 职场文书
MySQL中的布尔值,怎么存储false或true
2021/06/04 MySQL
Java设计模式之代理模式
2022/04/22 Java/Android