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 水平的题目
May 30 PHP
php cookis创建实现代码
Mar 16 PHP
深入分析使用mysql_fetch_object()以对象的形式返回查询结果
Jun 05 PHP
php的慢速日志引起的Mysql错误问题分析
May 13 PHP
WordPress中转义HTML与过滤链接的相关PHP函数使用解析
Dec 22 PHP
php parse_str() 函数的定义和用法
May 23 PHP
php使用curl下载指定大小的文件实例代码
Sep 30 PHP
php实现表单提交上传文件功能
May 28 PHP
laravel 验证错误信息到 blade模板的方法
Sep 29 PHP
Vagrant(WSL)+PHPStorm+Xdebu 断点调试环境搭建
Dec 13 PHP
YII2框架中添加自定义模块的方法实例分析
Mar 18 PHP
TP5框架实现的数据库备份功能示例
Apr 05 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字符串截取的简单方法
2013/07/04 PHP
PHP过滤★等特殊符号的正则
2014/01/27 PHP
PHP计算当前坐标3公里内4个角落的最大最小经纬度实例
2016/02/26 PHP
PHP 将数组打乱 shuffle函数的用法及简单实例
2016/06/17 PHP
基于PHP实现用户注册登录功能
2016/10/14 PHP
CI框架中类的自动加载问题分析
2016/11/21 PHP
让ThinkPHP的模板引擎达到最佳效率的方法详解
2017/03/14 PHP
php版本CKEditor 4和CKFinder安装及配置方法图文教程
2019/06/05 PHP
基于jQuery的淡入淡出可自动切换的幻灯插件打包下载
2010/09/15 Javascript
快速排序 php与javascript的不同之处
2011/02/22 Javascript
cument.execCommand()用法深入理解
2012/12/04 Javascript
javascript动态创建链接的方法
2015/05/13 Javascript
Javascript中判断对象是否为空
2015/06/10 Javascript
clipboard.js无需Flash无需依赖任何JS库实现文本复制与剪切
2015/10/10 Javascript
jQuery插件imgPreviewQs实现上传图片预览
2016/01/15 Javascript
JQuery异步提交表单与文件上传功能示例
2017/01/12 Javascript
利用Vue.js实现checkbox的全选反选效果
2017/01/18 Javascript
jquery平滑滚动到顶部插件使用详解
2017/05/08 jQuery
微信小程序 POST请求的实例详解
2017/09/29 Javascript
详解Vue中的Props与Data细微差别
2020/03/02 Javascript
9个JavaScript日常开发小技巧
2020/10/06 Javascript
vue+element实现动态加载表单
2020/12/13 Vue.js
python实现一次创建多级目录的方法
2015/05/15 Python
python Selenium爬取内容并存储至MySQL数据库的实现代码
2017/03/16 Python
Python基础学习之常见的内建函数整理
2017/09/06 Python
Python语言描述机器学习之Logistic回归算法
2017/12/21 Python
python 抓包保存为pcap文件并解析的实例
2019/07/23 Python
pandas DataFrame的修改方法(值、列、索引)
2019/08/02 Python
使用Python制作新型冠状病毒实时疫情图
2020/01/28 Python
Python Selenium截图功能实现代码
2020/04/26 Python
Flask缓存静态文件的具体方法
2020/08/02 Python
乌克兰电子产品和家用电器购物网站:TOUCH
2019/08/09 全球购物
设备收款委托书范本
2014/10/02 职场文书
妇联2016年六一国际儿童节活动总结
2016/04/06 职场文书
你离财务总监还有多远?速览CFO的岗位职责
2019/11/18 职场文书
sql注入教程之类型以及提交注入
2021/08/02 MySQL