前几天做项目时,碰到个需求,商品多级分类筛选功能。之前从没做过,查了不少资料,总算实现了。虽然实现的不够优雅,但起码能有效果,心里还是很高兴的。菜鸟有一颗成为大神的心。在这里分享给各位童鞋,欢迎大佬指导一下。
先说下原理:php实现多级筛选主要是利用a链接get传参,把每个标签包含的参数通过a链接传到后台控制器,控制器接收参数后接着再把值赋回给模板,并且根据参数查询对应数据输出给前台。实现起来也不难,讲到这里,感觉刚开始自己完全没有思路的样子真是该打,哈哈...
下面是前台代码示例:
<body>

<div><span>类型:</span><!-- 0~4代表ID值 --><a href="{:url('地址', ['category' => 0, 'mode' => $a, 'price'=>$c])}">全部</a><a href="{:url('地址', ['category' => 1, 'mode' => $a, 'price'=>$c])}">官方新闻</a><a href="{:url('地址', ['category' => 2, 'mode' => $a, 'price'=>$c])}">移动应用</a><a href="{:url('地址', ['category' => 3, 'mode' => $a, 'price'=>$c])}">微信公众号</a><a href="{:url('地址', ['category' => 4, 'mode' => $a, 'price'=>$c])}">Android开发</a><span>模式:<a href="{:url('地址', ['category' => $b, 'mode' => '0', 'price'=>$c])}">全部</a><a href="{:url('地址', ['category' => $b, 'mode' => '1', 'price'=>$c])}">模式1</a><a href="{:url('地址', ['category' => $b, 'mode' => '2', 'price'=>$c])}">模式2</a><a href="{:url('地址', ['category' => $b, 'mode' => '3', 'price'=>$c])}">模式3</a><a href="{:url('地址', ['category' => $b, 'mode' => '4', 'price'=>$c])}">模式4</a><a href="{:url('地址', ['category' => $b, 'mode' => '5', 'price'=>$c])}">模式5</a><a href="{:url('地址', ['category' => $b, 'mode' => '6', 'price'=>$c])}">模式6</a><span>预算价格:<a href="{:url('地址', ['category' => $b, 'mode' => $a, 'price'=>'0'])}">全部</a><a href="{:url('地址', ['category' => $b, 'mode' => $a, 'price'=>'1'])}">600以下</a><a href="{:url('地址', ['category' => $b, 'mode' => $a, 'price'=>'600'])}">600-1000</a><a href="{:url('地址', ['category' => $b, 'mode' => $a, 'price'=>'1000'])}">1000-5000</a><a href="{:url('地址', ['category' => $b, 'mode' => $a, 'price'=>'5000'])}">5000以上</a>
</div>

<!-- 控制把获取过来的参数再赋值给模板 -->
</body>

这段代码大家肯定都能看懂,我再啰嗦一下,比如当用户第一下点击类型里面的全部的时候,便会把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简单实现类似京东淘宝多级商品筛选功能。相关推荐

  1. 基于vue开发的多条件联动筛选特效(类似京东/淘宝/中国移动)

    基于vue实现的多条件联动筛选功能(类似中国移动商城),选中,反选,删除功能. UI库用的ivew 先来张实现的效果图 展开时候的效果 收起时候的效果 代码如下: 1. html(用了iview的UI ...

  2. 产品助理day4及简评京东淘宝美团等筛选实现方式的优缺点

    一.工作内容 1.绘制一个人事统计的信息架构图(工具:Xmind) 2.根据信息架构图制作原型 二.收获 1.制作信息架构图的展现方式应该是以用户视角逐层展开功能的方式,比如中的入口,再到分入口,再到 ...

  3. 类似京东淘宝寄售转拍系统源码-拍卖系统源码-竞拍系统网站源码

    古玩文物字画寄售转拍系统源码-拍卖系统源码-竞拍系统网站源码(经检查代码不加密,可二进行二开),拍卖转拍,玩家互动挑选自己想要的拍品,转拍获利,还可以提货,一款购物和赚钱的不二选择操作步骤打开拍卖首页 ...

  4. 京东淘宝拼多多自动查券找券搜券返利机器人实现方法分享

    京东淘宝拼多多自动查券找券搜券返利机器人实现方法分享 一.淘客CMS网站 全面打通PC和手机端,只需简单部署一下,就可以拥有属于自己的优惠券cms淘客网站,查券返利轻松搞定 不依赖第三方,完全淘宝联盟 ...

  5. VUE类似淘宝选择商品多规格(库存判断)

    1.组件效果展示 也可访问链接查看网页效果... 后面又用uni-app写过一次,比这次稍微清晰一些 uni-app类似淘宝选择商品多规格(库存判断) 瞎封装组件系列: VUE简单提示框 VUE树形图 ...

  6. 【python自动化测试】京东|淘宝|秒杀12306抢票程序揭秘!一起薅羊毛吧【含源码】

    相信老铁们应该也看过很多这样的视频或者帖子:python自动秒杀的程序,京东,淘宝,大麦网抢票,秒杀抢购抢茅台,12306抢票,还有python薅羊毛的,感觉好像需求挺大的,很多人感兴趣.我也看了一些 ...

  7. 【任务脚本】1104更新双十一京东淘宝任务脚本,全自动程序,淘宝京东自动做任务...

       公众号关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达.     今天试了一下大神的脚本,将相关的注意事项发一下.     删掉了之前的 ...

  8. 一键自动完成 2021 京东/淘宝双 11 活动

    苏生不惑第295篇原创文章,将本公众号设为星标,第一时间看最新文章. 之前分享过免费使用腾讯云每天定时签到京东领取京豆网易云音乐等级快速升级:每天自动打卡听歌300首签到 获取脚本,再安装nodejs ...

  9. 京东淘宝手机销售量排行

    京东淘宝手机销售量排行 京东手机销售排行: 京东自营安卓手机排行榜 排行 手机品牌 手机型号 手机分辨率 手机操作系统 安卓版本号 1 小米 小米10 2340X1080像素 MIUI 11 Andr ...

最新文章

  1. Cell综述-建立因果关系:合成菌群在植物菌群研究中的机会
  2. Python os.chdir() 方法用于改变当前工作目录到指定的路径。
  3. 各种格式的视频播放的代码(wma格式)
  4. git切换路径报错:bash: cd: too many arguments
  5. java 高效批量插入 sqlserver 数据库
  6. cdh中hdfs非ha环境迁移Namenode与secondaryNamenode,从uc机器到阿里;
  7. java异常处理机制_Java编程中的异常机制
  8. 智能标注、电力和地下管网巡检,CV算法落地方案
  9. 设计模式(二 三)工厂模式:1-简单工厂模式
  10. matplotlib学习
  11. python erp源码_分享|值得考虑的 9 个开源 ERP 系统
  12. Unity 3D涂色
  13. SortPool (DGCNN) - An End-to-End Deep Learning Architecture for Graph Classification AAAI 2018
  14. 酷炫页面产品图片展示
  15. 维修服务器bga是什么,服务器主板芯片坏了有机器能拆除焊接BGA吗?
  16. MySql下最好用的数据库管理工具是哪个?
  17. SVD的原理及python实现——正本清源
  18. 【机器学习】强化学习的概念及马尔科夫决策
  19. 一文搞懂指针,指针的指针,悬浮指针,野指针
  20. 2022年最新内测分发内测托管、上架App Store教程

热门文章

  1. ai人工智能开发_人工智能使Web开发的面貌发生变化
  2. 刀片服务器如何选择操作系统,刀片服务器如何选择操作系统?
  3. android 语音和输入法按钮切换,android 切换系统语言,输入法也随之切换
  4. 我的世界java百度什么电脑玩好_【我的世界】为了在龙芯电脑上玩Minecraft(我的世界)我做了什么_玩得好游戏攻略...
  5. 原生JavaScript实现连连看游戏
  6. 利用Python+OpenCV对图像加密/解密
  7. 成功安装fbprophet(没有坑也没有眼泪,世上最详细步骤)
  8. 详解intel处理器命名规则
  9. android手机配什么蓝牙耳机,Airpods Pro搭配安卓手机+Windows电脑服用指南(避坑指南)...
  10. 开源软件七大盈利模式