首页 > 后端开发 > php教程 > ajax商品筛选功能怎么进行判断

ajax商品筛选功能怎么进行判断

WBOY
发布: 2016-06-13 12:01:49
原创
1403 人浏览过

ajax商品筛选功能如何进行判断

本帖最后由 q5975166 于 2014-07-07 19:49:42 编辑 我把筛选商品的各个选项以json的形式存入数据库的一个字段(cp_leibie)
比如我存了3条
他们的选项就是
{"208":["209"],"5":["182"],"6":["30"],"27":["36"],"28":["34"]}  假如该条数据id为1
{"92":["201","202","204"],"93":["137","138","139"],"94":["143","144"]}假如该条数据id为2
{"208":["209"],"5":["182"],"6":["29"],"27":["35"],"28":["33"]}假如该条数据id为3
取出的时候以数组遍历
-----------------------------------------------------------------
比如商品中其中一个选项是   (适用环境: 全部  办公室  现代  欧式 )
那么$peistr是“适用环境”的id,$liestr是后面的子选项的id,
具体怎么接收的就不贴出来了,
下面for循环里为什么减二也不用考虑了。
下面是ajax提交过去的查询语句:
$strpei="select `id`,`name`,`huiyuanjia`,`cpimg`,`shichangjia`,cp_leibie  from  `".$db_prefix."chanpin` where `ifxianshi`=1 and `cpfl`='".$sid."' ";<br />		$dqcp = $Db->FetchAll($strpei);//这是执行sql语句的方法<br />		$strpei.="and id in(";<br />		$strpei2="";<br />		foreach($dqcp as $dkey=>$dvalue){//遍历所有商品<br />			$darr=json_decode(urldecode($dvalue['cp_leibie']),true);//把json数据进行解码<br />				for($i=0;$i<count($peistr)-2;$i++){//把接收到的商品选项的id循环出来<br />					foreach($darr[$peistr[$i]] as $dddkey=>$dddvalue){//把解码后的数据进行遍历,键名是接收到的商品选项的id<br />						if($liestr[$i]==$dddvalue){//子选项的id和json数据里的值一致的话,就把该条数据的id加到条件里<br />							$strpei2.=$dvalue['id'].",";<br />						}<br />					}<br />				}<br />		}<br />		<br />		$strpei.=$strpei2.")";
登录后复制

符合条件的就把对应的商品的id写到条件的in语法里。
假如点击了209的子项,那么id为1和3的id就会加入条件里
问题是接收第一次没问题,当接收第二次的时点击201,应该没有符合条件的数据,但是3个ID的数据他都显示了出来。
应该是循环里的if判断没有写对,不知条件该如何写。或者在其他地方入手能解决
------解决方案--------------------
我把判断改了一下
if($liestr[$i]==$dddvalue){<br /> $strpei2.=$dvalue['id'].",";<br />} 
登录后复制


<br />$where.="$liestr[$i]==$dddvalue &&";<br />	if($i==(count($peistr)-2)){<br />		$where= substr($where,0,-2);<br />	}<br />	if($where){<br />		$strpei2.=$dvalue['id'].",";<br />	}<br />
登录后复制

但是这样的话,$where他是一个字符串来放到if里判断的。不能进行判断处理  无论是什么$where都是1。这只是一个思路,你看看吧
相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板