ThinkPHP刪除欄目(實(shí)現(xiàn)批量刪除欄目)
前段時(shí)間發(fā)表了一個(gè)刪除欄目的隨筆,當(dāng)時(shí)實(shí)現(xiàn)的功能是刪除一條信息,這次來實(shí)現(xiàn)一下批量刪除欄目。
我們需要達(dá)到的是這樣一個(gè)效果:
選中批量刪除按鈕后可以選中所有該頁面的欄目,這個(gè)是前端頁面的實(shí)現(xiàn),在這里就不多說了,我們直接進(jìn)入正題:批量刪除的功能。
1.前端頁面這里也有一個(gè)小小的點(diǎn),就是選擇框的name值應(yīng)給給他賦值為一個(gè)id的數(shù)組,value值為該欄目的id。
2.我們?cè)诳刂破髦袉为?dú)寫一個(gè)批量刪除的方法
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('批量刪除欄目失敗,請(qǐng)重試!'); } }else{ $this->error('未選中任何內(nèi)容,請(qǐng)重試!'); } }
這里要將傳過來的id數(shù)組轉(zhuǎn)化為以逗號(hào)分隔的字符串如:1,2,3,這樣可以直接進(jìn)行delete操作。
這就是我們dump出來options的結(jié)果,這條也是我們用來判斷刪除時(shí)是單個(gè)刪除還是批量刪除的依據(jù),如果options[where][id]是一個(gè)數(shù)組的話,則說明進(jìn)行的是批量刪除,否則就是單個(gè)刪除。
3.在模型中對(duì)刪除前構(gòu)造函數(shù)的修改
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{//單個(gè)刪除 $chilrenids =$this->childid($options['where']['id']); $chilrenids = implode(',', $chilrenids); } if($chilrenids){ $this->execute("delete from ed_privilege where id in($chilrenids)"); } }
在這里我們寫出批量刪除的代碼(單個(gè)刪除之前已經(jīng)寫過,不再提)
將傳過來的字符串轉(zhuǎn)化為不帶逗號(hào)的數(shù)組形式存在$arr中,建立一個(gè)空數(shù)組$sonpri,然后foreach遍歷,這里先查找出所有的子欄目id(會(huì)用childid函數(shù)),存入$sonpri2數(shù)組中 ,再將$sonpri和$sonpri2合并為一個(gè)數(shù)組,使用array_merge()函數(shù)完成,這樣我們才算是獲取到了所有子欄目的id,但是我們所獲取的id組中,會(huì)出現(xiàn)許多重復(fù)的id,所以這里我們還要進(jìn)行去重的操作,使用array_unique()函數(shù)。最后再進(jìn)行一次數(shù)組的拆分,得到id字符串,再進(jìn)行刪除就大功告成了。
以上這篇ThinkPHP刪除欄目(實(shí)現(xiàn)批量刪除欄目)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Thinkphp5.0框架使用模型Model的獲取器、修改器、軟刪除數(shù)據(jù)操作示例
- Thinkphp5.0 框架使用模型Model添加、更新、刪除數(shù)據(jù)操作詳解
- tp5(thinkPHP5框架)使用DB實(shí)現(xiàn)批量刪除功能示例
- thinkPHP利用ajax異步上傳圖片并顯示、刪除的示例
- ThinkPHP框架實(shí)現(xiàn)用戶信息查詢更新及刪除功能示例
- 基于php(Thinkphp)+jquery 實(shí)現(xiàn)ajax多選反選不選刪除數(shù)據(jù)功能
- thinkphp框架實(shí)現(xiàn)刪除和批量刪除
- thinkPHP刪除前彈出確認(rèn)框的簡(jiǎn)單實(shí)現(xiàn)方法
- 基于ThinkPHP刪除目錄及目錄文件函數(shù)
相關(guān)文章
php利用header函數(shù)實(shí)現(xiàn)文件下載時(shí)直接提示保存
相信很多人在實(shí)現(xiàn)文件下載功能時(shí)會(huì)遇到這種情況,本意是點(diǎn)擊下載連接提示保存對(duì)話框,事情往往事與愿違,例如PDF這樣的文件會(huì)直接在瀏覽器中現(xiàn)實(shí)文件內(nèi)容,而不是提示保存。通過下面的方法可以解決這個(gè)問題。2009-11-11PHP strip_tags()去除HTML、XML以及PHP的標(biāo)簽介紹
這篇文章主要介紹了PHP strip_tags()去除HTML、XML以及PHP的標(biāo)簽介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助2014-02-02php獲得文件大小和文件創(chuàng)建時(shí)間的方法
這篇文章主要介紹了php獲得文件大小和文件創(chuàng)建時(shí)間的方法,涉及php中filesize及fileatime函數(shù)的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03PHP實(shí)現(xiàn)將上傳圖片自動(dòng)縮放到指定分辨率,并保持清晰度封裝類示例
這篇文章主要介紹了PHP實(shí)現(xiàn)將上傳圖片自動(dòng)縮放到指定分辨率,并保持清晰度封裝類,涉及php針對(duì)jpeg、png、gif等格式圖片的縮放與輸出相關(guān)操作技巧,需要的朋友可以參考下2019-06-06php 記錄進(jìn)行累加并顯示總時(shí)長(zhǎng)為秒的結(jié)果
用php如何將這些記錄進(jìn)行累加,最后顯示為一個(gè)總時(shí)長(zhǎng)為秒鐘的結(jié)果2011-11-11PHP設(shè)計(jì)模式 注冊(cè)表模式(多個(gè)類的注冊(cè))
注冊(cè)表模式其實(shí)是一個(gè)單例模式,注冊(cè)表類提供靜態(tài)方法(或單例對(duì)象的實(shí)例化方法)來讓其它對(duì)象訪問其中的數(shù)據(jù)(通常是對(duì)象)。整個(gè)系統(tǒng)中的每個(gè)對(duì)象都可以訪問這些數(shù)據(jù)對(duì)象2012-02-02