首頁 >後端開發 >php教程 >TP5簡單實作類似淘寶多層次商品篩選功能(程式碼範例)

TP5簡單實作類似淘寶多層次商品篩選功能(程式碼範例)

不言
不言轉載
2019-03-02 13:13:123628瀏覽

這篇文章帶給大家的內容是關於TP5簡單實現類似淘寶多層次商品篩選功能(程式碼範例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

前幾天做專案時,碰到個需求,商品多層分類篩選功能。之前從來沒做過,查了不少資料,總算實現了。雖然實現的不夠優雅,但起碼能有效果,心裡還是很高興的。菜鳥有一顆成為大神的心。在這裡分享給各位童鞋,歡迎大佬來指導。
先說下原理:php實現多層篩選主要是利用a連結get傳參,把每個標籤包含的參數透過a連結傳到後台控制器,控制器接收參數後接著再把值賦回給模板,並且根據參數查詢對應資料輸出給前台。實現起來也不難,講到這裡,感覺剛開始自己完全沒有思路的樣子真是該打,哈哈...
下面是前台程式碼範例:

<div>
    <span>类型:</span>
    <!-- 0~4代表ID值 -->
    <a> 0, 'mode' => $a, 'price'=>$c])}">全部</a>
    <a> 1, 'mode' => $a, 'price'=>$c])}">官方新闻</a>
    <a> 2, 'mode' => $a, 'price'=>$c])}">移动应用</a>
    <a> 3, 'mode' => $a, 'price'=>$c])}">微信公众号</a>
    <a> 4, 'mode' => $a, 'price'=>$c])}">Android开发</a>

    <span>模式:
    <a> $b, 'mode' => '0', 'price'=>$c])}">全部</a>
    <a> $b, 'mode' => '1', 'price'=>$c])}">模式1</a>
    <a> $b, 'mode' => '2', 'price'=>$c])}">模式2</a>
    <a> $b, 'mode' => '3', 'price'=>$c])}">模式3</a>
    <a> $b, 'mode' => '4', 'price'=>$c])}">模式4</a>
    <a> $b, 'mode' => '5', 'price'=>$c])}">模式5</a>
    <a> $b, 'mode' => '6', 'price'=>$c])}">模式6</a>

    <span>预算价格:
    <a> $b, 'mode' => $a, 'price'=>'0'])}">全部</a>
    <a> $b, 'mode' => $a, 'price'=>'1'])}">600以下</a>
    <a> $b, 'mode' => $a, 'price'=>'600'])}">600-1000</a>
    <a> $b, 'mode' => $a, 'price'=>'1000'])}">1000-5000</a>
    <a> $b, 'mode' => $a, 'price'=>'5000'])}">5000以上</a>
</span></span>
</div>


這段程式碼大家一定都能看懂,我再囉嗦一下,例如當用戶第一下點擊類型裡面的全部的時候,便會把category字段為0傳到後台。後台接收判斷並把值再賦回給前台,如果category欄位值為0,則查詢全部的分類資料。如果使用者第二下點選模式裡面的全部,那此時因為category的值是由後台賦值過來的所以為0,mode為0。如果第三下點選價格裡的全部,則三個標籤值全部為0。此時後台判斷條件,如果全部為0,則全部查詢,模板遍歷顯示。舉一反三,其他標籤也是一樣。 實際操作中,絕對不會把值一個一個寫在標籤裡這麼傻,只要用volist遍歷出來取值就可以了。大家都懂得哈。
因為是多層次篩選,所以where方法條件肯定不只一個,所以要拼接where方法的值,我是個TPer,用TP5的方法舉例:
$b = input('category') ;//接收的分類id
$a = input('mode'); //接收的模式id
$c = input('price'); //接收的價格範圍值
$ where = ['category'=>$category,'mode'=>$mode,'price'=>$price];//拼接where條件
$data = model('表名')- >where($where)->select(); //查詢資料
return $this->fetch('',[
'data'=>$data,
'c '=>$c,
'b'=>$b,
'a'=>$a
]); //模板賦值

#當然,實際的情況肯定要設條件判斷三個值的資料的,根據值的情況設定where條件。例如:

 if ($a == 0 && $b == 0 && $c == 0) {//条件全部为空,即显示所有
        $where = '';
    } elseif ($a == 0 && $b != 0 && $c != 0) {//模式为全部范围,分类和价格单独指定。
        $where = ['b'=>$b,'c'=>$c];
    }

因為我的程式碼寫的比較冗餘,就不獻醜了哈...
最後實現的效果是這樣:

TP5簡單實作類似淘寶多層次商品篩選功能(程式碼範例)


TP5簡單實作類似淘寶多層次商品篩選功能(程式碼範例)

圖中的樣式可以在標籤中判斷,如果頁面接收的參數值和目前標籤中的值相同,則給標籤高亮樣式。至此,就是這樣,如果有同學有更好的思路,請不吝賜教。

#

以上是TP5簡單實作類似淘寶多層次商品篩選功能(程式碼範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:segmentfault.com。如有侵權,請聯絡admin@php.cn刪除