用PHP實現篩選分類列表

2020-07-16 10:05:31
本篇文章,小編講和大家分享用PHP實現篩選分類列表,具有一定的參考價值,有需要的朋友可以了解一下,希望能夠對你有幫助。

    資料庫設計:

    文章表一張:art;

文章表的sortid欄位關聯分類表的id,type_id關聯type表欄位。填充資料大致如下,如果不清楚sortid,和type_id請移步至昨天我的另一篇部落格《php實現類似慕課網,TW511.COM的分類功能 》

後端程式碼:

//文章列表
private function artList($type,$direct,$sort,$order="Art.readtime"){
    if(!empty($type)){
        $where['type_id'] = $type;
    }
    //找的是大分類下面的小分類
    if(!empty($direct) && !empty($sort)){
        $where['Sort.id'] = $sort;
    }else{
        //查詢所有的大分類
        $sortList = M("Sort")->where("parent=0")->field("id")->select();
        //得到所有的大分類一維陣列
        $list = array();
        foreach ($sortList as $item =>&$value){
            $list[] = $value['id'];
        }
        if(in_array($sort,$list)){
             //判斷穿過來的分類引數是否在大分類裡面
            //拿到該大分類ID的所有子分類ID
            $idList =  D("Sort")->where("parent=$sort")->field("id")->select();
            if($idList){
                $idArr = array();
                foreach ($idList as $item =>&$value){
                    $idArr[] =  $value['id'];
                }
                $ids = implode(",",$idArr);
                unset($where);
                //判斷此時型別是否為空
                if(!empty($type)){
                    $where = "Art.sortid in ($ids) and Art.type_id=$type";
                }else{
                    $where = "Art.sortid in ($ids)";
                }
            }else{
                $where['Sort.id']= $sort;
            }
        }
    }

    $model  = $this->Model= "Art";
    $list   = D($model)
        ->where($where)
        ->field("Art.*")
        ->join("Sort on Sort.id=Art.sortid")
        ->order($order)
        ->select();
    return $list;
}
//程式碼講解:
//在首頁列表多加一個引數artList,通過傳的$sort,$parent,$type三個引數來篩選對應的文章。
//程式碼部分我都進行了詳細的註釋,請看上面寫的artList方法。

前端頁面採用的是bootstrap,昨天忘了說,頁面的程式碼很簡單就是一個列表的展示,用到了thinkphp的標籤,程式碼如下:

整體的效果給大家展示一下:


   

相關教學:PHP視訊教學

以上就是用PHP實現篩選分類列表的詳細內容,更多請關注TW511.COM其它相關文章!