Heim  >  Artikel  >  Backend-Entwicklung  >  ajax商品筛选功能怎么进行判断

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

WBOY
WBOYOriginal
2016-06-13 12:01:491327Durchsuche

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。这只是一个思路,你看看吧
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn