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中的extract的作用分析
Apr 09 PHP
使用PHP批量生成随机用户名
Jul 10 PHP
PHP 5.3.0 安装分析心得
Aug 07 PHP
php 向访客和爬虫显示不同的内容
Nov 09 PHP
PHP 强制下载文件代码
Oct 24 PHP
php urlencode()与urldecode()函数字符编码原理详解
Dec 06 PHP
php命令行用法入门实例教程
Oct 27 PHP
php中$_GET与$_POST过滤sql注入的方法
Nov 03 PHP
php实现paypal 授权登录
May 28 PHP
jQuery+Ajax+PHP“喜欢”评级功能实现代码
Oct 08 PHP
java模拟PHP的pack和unpack类
Apr 13 PHP
php版微信公众平台接口参数调试实现判断用户行为的方法
Sep 23 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程序中的常见漏洞进行攻击
2006/10/09 PHP
php中获取指定IP的物理地址的代码(正则表达式)
2011/06/23 PHP
PHP的autoload机制的实现解析
2012/09/15 PHP
在CentOS上搭建LAMP+vsftpd环境的简单指南
2015/08/01 PHP
Centos7安装swoole扩展操作示例
2020/03/26 PHP
ExtJS 2.0实用简明教程之应用ExtJS
2009/04/29 Javascript
java和javascript获取word文档的书签位置对比
2014/06/19 Javascript
常用的JavaScript模板引擎介绍
2015/02/28 Javascript
如何屏蔽防止别的网站嵌入框架代码
2015/08/24 Javascript
jQuery使用正则表达式限制文本框只能输入数字
2016/06/18 Javascript
js简单实现调整网页字体大小的方法
2016/07/23 Javascript
js浏览器html5表单验证
2016/10/17 Javascript
10行原生JS实现文字无缝滚动(超简单)
2018/01/02 Javascript
详解如何从零开始搭建Express+Vue开发环境
2018/07/17 Javascript
详解Ant Design of React的安装和使用方法
2018/12/27 Javascript
JS实现给数组对象排序的方法分析
2019/06/24 Javascript
Vue单文件组件开发实现过程详解
2020/07/30 Javascript
[02:48]DOTA2英雄基础教程 拉席克
2013/12/12 DOTA
[05:36]DOTA2 2015国际邀请赛中国区预选赛第四日TOP10
2015/05/29 DOTA
Python通过PIL获取图片主要颜色并和颜色库进行对比的方法
2015/03/19 Python
基于hashlib模块--加密(详解)
2017/06/21 Python
Python + selenium自动化环境搭建的完整步骤
2018/05/19 Python
python 获取utc时间转化为本地时间的方法
2018/12/31 Python
python pygame实现五子棋小游戏
2020/10/26 Python
python join方法使用详解
2019/07/30 Python
CSS3制作气泡对话框的实例教程
2016/05/10 HTML / CSS
英国网上超市:Ocado
2020/03/05 全球购物
美国在线肉类和海鲜配送:Crowd Cow
2020/10/02 全球购物
零件设计自荐信范文
2013/11/27 职场文书
自荐书4要点
2014/01/25 职场文书
退伍老兵事迹材料
2014/01/31 职场文书
安全标语口号
2014/06/09 职场文书
学校党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
卫生主题班会
2015/08/14 职场文书
十个Python自动化常用操作,即拿即用
2021/05/10 Python
详细介绍Java中的CyclicBarrier
2022/04/13 Java/Android