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 相关文章推荐
ASP知识讲座四
Oct 09 PHP
Adodb的十个实例(清晰版)
Dec 31 PHP
PHP生成不同颜色、不同大小的tag标签函数
Sep 23 PHP
php 启动时报错的简单解决方法
Jan 27 PHP
PHP 面向对象程序设计(oop)学习笔记 (五) - PHP 命名空间
Jun 12 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十六)
Jun 30 PHP
PHP下的Oracle客户端扩展(OCI8)安装教程
Sep 10 PHP
PHP使用array_fill定义多维数组的方法
Mar 18 PHP
php+html5实现无刷新图片上传教程
Jan 22 PHP
php语言的7种基本的排序方法
Dec 28 PHP
快速解决PHP调用Word组件DCOM权限的问题
Dec 27 PHP
[原创]PHP global全局变量经典应用与注意事项分析【附$GLOBALS用法对比】
Jul 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实现rc4加密算法代码
2012/04/25 PHP
codeigniter自带数据库类使用方法说明
2014/03/25 PHP
PHP检测数据类型的几种方法(总结)
2017/03/04 PHP
利用PHP获取汉字首字母并且分组排序详解
2017/10/22 PHP
Laravel基础_关于view共享数据的示例讲解
2019/10/14 PHP
event.keyCode键码值表 附只能输入特定的字符串代码
2009/05/15 Javascript
yepnope.js 异步加载资源文件
2011/09/08 Javascript
js 在定义的时候立即执行的函数表达式(function)写法
2013/01/16 Javascript
JS禁用浏览器退格键实现思路及代码
2013/10/29 Javascript
js实现支持手机滑动切换的轮播图片效果实例
2015/04/29 Javascript
Jsonp 关键字详解及json和jsonp的区别,ajax和jsonp的区别
2015/12/30 Javascript
jquery采用oop模式class类的使用示例
2016/01/22 Javascript
JSON简介以及用法汇总
2016/02/21 Javascript
JS 数字转换为大写金额的简单实例
2016/08/04 Javascript
AngularJS 中的Promise --- $q服务详解
2016/09/14 Javascript
使用Vue组件实现一个简单弹窗效果
2018/04/23 Javascript
vue项目打包上传github并制作预览链接(pages)
2019/04/19 Javascript
[15:46]教你分分钟做大人——沙王
2015/03/11 DOTA
[01:02]DOTA2上海特锦赛SHOWOPEN
2016/03/25 DOTA
在Python中使用判断语句和循环的教程
2015/04/25 Python
python操作oracle的完整教程分享
2018/01/30 Python
Python操作Sql Server 2008数据库的方法详解
2018/05/17 Python
Python中 map()函数的用法详解
2018/07/10 Python
Python封装原理与实现方法详解
2018/08/28 Python
pygame游戏之旅 调用按钮实现游戏开始功能
2018/11/21 Python
对Python3使运行暂停的方法详解
2019/02/18 Python
基于python实现MQTT发布订阅过程原理解析
2020/07/27 Python
英国高街奥特莱斯:Highstreet Outlet
2019/11/21 全球购物
德国户外商店:eXXpozed
2020/07/25 全球购物
介绍一下.NET构架下remoting和webservice
2014/05/08 面试题
shell程序中如何注释
2012/01/28 面试题
如果让你测试一台高速激光打印机,你都会进行哪些测试
2012/12/04 面试题
大学本科毕业生求职简历的自我评价
2013/10/09 职场文书
新学期家长寄语
2014/01/19 职场文书
党支部考察意见范文
2015/06/02 职场文书
创业计划书之服装
2019/10/07 职场文书