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 5.0 Pear安装方法
Dec 06 PHP
php 安全过滤函数代码
May 07 PHP
PHP正确配置mysql(apache环境)
Aug 28 PHP
php实现的mongodb操作类实例
Apr 03 PHP
使用WordPress发送电子邮件的相关PHP函数用法解析
Dec 15 PHP
非常实用的php验证码类
May 15 PHP
Thinkphp自定义代码生成工具及用法说明(附下载地址)
May 27 PHP
详解PHP中websocket的使用方法
Sep 15 PHP
PHP实现简易blog的制作
Oct 24 PHP
php实现的pdo公共类定义与用法示例
Jul 19 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
Nov 17 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/06/21 PHP
PHP中的替代语法简介
2014/08/22 PHP
kindeditor 加入七牛云上传的实例讲解
2017/11/12 PHP
jquery 日期控件datepicker属性详细解析
2013/11/08 Javascript
一个简单的jQuery插件ajaxfileupload.js实现ajax上传文件例子
2014/06/26 Javascript
javascript实现将文件保存到本地方法汇总
2015/07/26 Javascript
windows下安装nodejs及框架express
2015/08/07 NodeJs
12种JavaScript常用的MVC框架比较分析
2015/11/16 Javascript
简单实现js浮动框
2016/12/13 Javascript
JavaScript输出所选择起始与结束日期的方法
2017/07/12 Javascript
javascript 中模板方法单例的实现方法
2017/10/17 Javascript
vue使用Proxy实现双向绑定的方法示例
2019/03/20 Javascript
ES6中定义类和对象的方法示例
2019/07/31 Javascript
Websocket 向指定用户发消息的方法
2020/01/09 Javascript
原生js实现放大镜组件
2021/01/22 Javascript
python爬虫入门教程--正则表达式完全指南(五)
2017/05/25 Python
Django 路由控制的实现代码
2018/11/08 Python
python实现画五角星和螺旋线的示例
2019/01/20 Python
Python基本数据结构与用法详解【列表、元组、集合、字典】
2019/03/23 Python
python递归法实现简易连连看小游戏
2020/03/25 Python
Django文件存储 默认存储系统解析
2019/08/02 Python
Python发送手机动态验证码代码实例
2020/02/28 Python
Python基于模块Paramiko实现SSHv2协议
2020/04/28 Python
python_matplotlib改变横坐标和纵坐标上的刻度(ticks)方式
2020/05/16 Python
python中Django文件上传方法详解
2020/08/05 Python
HTML5 embed标签定义和用法详解
2014/05/09 HTML / CSS
美国玛丽莎收藏奢华时尚商店:Marissa Collections
2016/11/21 全球购物
编程输出如下图形
2013/11/24 面试题
vue实现倒计时功能
2021/03/24 Vue.js
诉讼代理人授权委托书
2014/04/08 职场文书
党的群众教育实践活动实施方案
2014/06/12 职场文书
廉洁自律个人总结
2015/02/14 职场文书
优质护理服务心得体会
2016/01/22 职场文书
小学教代会开幕词
2016/03/04 职场文书
Java新手教程之ArrayList的基本使用
2021/06/20 Java/Android
go goroutine 怎样进行错误处理
2021/07/16 Golang