無標題文章

首先創(chuàng)建數(shù)據(jù)庫:

CREATEDATABASEIFNOTEXISTS`fenlei`DEFAULTcharacterSETutf8COLLATEutf8_general_ci;USE`fenlei`;CREATETABLEIFNOTEXISTS`category`(`catid`mediumint(8)unsignedNOTNULLAUTO_INCREMENTCOMMENT'主鍵',`upid`mediumint(8)unsignedNOTNULLDEFAULT'0'COMMENT'上級分類catid',`catname`varchar(255)NOTNULLDEFAULT''COMMENT'分類名稱',`displayorder`tinyint(1)NOTNULLDEFAULT'0'COMMENT'顯示順序',`status`tinyint(1)NOTNULLDEFAULT'0'COMMENT'0-關閉,1-啟用',

PRIMARYKEY(`catid`)

)ENGINE=InnoDBDEFAULTCHARSET=utf8COMMENT='文章分類';INSERTINTO`category`VALUES('1','0','分類1','0','1'),

('2','0','分類2','0','1'),

('3','0','分類3','0','1'),

('4','0','分類4','0','1'),

('5','0','分類5','0','1'),

('6','1','分類1-1','0','1'),

('7','1','分類1-2','0','1'),

('8','1','分類1-3','0','1'),

('9','1','分類1-4','0','1'),

('10','1','分類1-5','0','1'),

('11','6','分類1-1-1','0','1'),

('12','6','分類1-1-2','0','1'),

('13','6','分類1-1-3','0','1'),

('14','7','分類1-2-1','0','1'),

('15','7','分類1-2-2','0','1'),

('16','11','分類1-1-1-1','0','1'),

('17','11','分類1-1-1-2','0','1');

model


* 這是一個成熟的模型,放入相應文件夾直接調(diào)用即可

*/namespaceapp\index\model;classCategoryextends\think\Model{/*

* 打開冰箱:從數(shù)據(jù)庫取出所有數(shù)據(jù),并放進緩存內(nèi)

* 即可獨立輸出也可以在其他位置調(diào)用

*/publicfunctioncategory_query($catid=0){

cache('category',null);//正式環(huán)境刪除本行可減少一次查詢if(!$result = cache('category')){

$Category =newCategory();

$result = [];foreach($Category->order('displayorder asc,catid asc')->select()as$data){

$result[$data['catid']] = $data;

}

cache('category',$result,0);

}return$catid ? $result[$catid] : $result;//如果傳入單個分類catid,那么直接返回就行,可用于列表頁,大大降低查詢次數(shù)}/*

* 把大象放進冰箱:將第一步得到的數(shù)據(jù)集轉化為無限級數(shù)組

* 即可獨立輸出也可以在其他位置調(diào)用

*/publicfunctioncategory_tree($upid=0,$status='0,1'){

$status = is_string($status) ? explode(',', $status) : $status;

$result = [];foreach($this->category_query()as$catid=>$cat){if($upid == $cat['upid'] && in_array($cat['status'],$status)){

$cat['subcat'] =$this->category_tree($cat['catid'],$status);

$result[] = $cat;

}

}return$result;

}/*

* 關上冰箱門:用于實際用途,將多級數(shù)據(jù)傳入,轉化為前端html代碼

* 該html的轉化結果可從第一步中獲取方式不同來實現(xiàn)從哪一級開始展示

* 本函數(shù)只是師范函數(shù),實際運用中只需要修改這個函數(shù)結構體就能完全實現(xiàn)仿網(wǎng)易蓋樓效果

*/publicfunctioncategory_html($categorys,$depth=0){

$depth_html = $html ='';for($i=0; $i < $depth; $i++) {

$depth_html .='——';

}foreach($categorysas$data){

'.$data['catid'].'

'.$data['displayorder'].'

'.$depth_html.$data['catname'].'

$html .='';if($data['subcat']){

$html .=$this->category_html($data['subcat'],$depth+1);

}

}return$html;

}

}?>



首先通過category_query方法獲取到所有分類,

然后通過category_tree方法將得到的數(shù)據(jù)轉化為無限分類數(shù)組

最后再通過category_html方法將上面得到的無限分類數(shù)組輸出為html

控制器Controller


$Category =newCategory;//實例化類$category_tree = $Category->category_tree();// 獲取整體多級數(shù)組樹結果$this->view->category_list = $Category->category_html($category_tree);//將結果轉化為實體html并傳值給模板return$this->fetch();

}

}

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • # 一度蜜v3.0協(xié)議 --- # 交互協(xié)議 [TOC] ## 協(xié)議說明 ### 請求參數(shù) 下表列出了v3.0版協(xié)...
    c5e350bc5b40閱讀 737評論 0 0
  • 轉至元數(shù)據(jù)結尾創(chuàng)建: 董瀟偉,最新修改于: 十二月 23, 2016 轉至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 2,058評論 0 9
  • http://blog.csdn.net/david21984/article/details/57451917 ...
    紫色冰雨閱讀 417評論 0 1
  • 1、設置UILabel行間距 NSMutableAttributedString*attrString=[[NSM...
    iOS祎閱讀 2,372評論 0 0
  • 河岸上有一棵蒼老的柳樹 那是我太爺爺種下的 當年他放羊的時候 折下的柳枝被他隨手插在了河邊 當柳枝長成了樹的時候 ...
    燕趙大俠閱讀 458評論 0 0

友情鏈接更多精彩內(nèi)容