這篇文章帶給大家的內容是關於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簡單實作類似淘寶多層次商品篩選功能(程式碼範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

在css中,可用list-style-type属性来去掉ul的圆点标记,语法为“ul{list-style-type:none}”;list-style-type属性可设置列表项标记的类型,当值为“none”可不定义标记,也可去除已有标记。

区别是:css是层叠样式表单,是将样式信息与网页内容分离的一种标记语言,主要用来设计网页的样式,还可以对网页各元素进行格式化;xml是可扩展标记语言,是一种数据存储语言,用于使用简单的标记描述数据,将文档分成许多部件并对这些部件加以标识。

在css中,可以利用cursor属性实现鼠标隐藏效果,该属性用于定义鼠标指针放在一个元素边界范围内时所用的光标形状,当属性值设置为none时,就可以实现鼠标隐藏效果,语法为“元素{cursor:none}”。

在css中,rtl是“right-to-left”的缩写,是从右往左的意思,指的是内联内容从右往左依次排布,是direction属性的一个属性值;该属性规定了文本的方向和书写方向,语法为“元素{direction:rtl}”。

转换方法:1、给英文元素添加“text-transform: uppercase;”样式,可将所有的英文字母都变成大写;2、给英文元素添加“text-transform:capitalize;”样式,可将英文文本中每个单词的首字母变为大写。

在css中,可以利用“font-style”属性设置i元素不是斜体样式,该属性用于指定文本的字体样式,当属性值设置为“normal”时,会显示元素的标准字体样式,语法为“i元素{font-style:normal}”。

在css3中,可以用“transform-origin”属性设置rotate的旋转中心点,该属性可更改转换元素的位置,第一个参数设置x轴的旋转位置,第二个参数设置y轴旋转位置,语法为“transform-origin:x轴位置 y轴位置”。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Dreamweaver CS6
視覺化網頁開發工具

WebStorm Mac版
好用的JavaScript開發工具