ホームページ  >  記事  >  バックエンド開発  >  Ajaxプロダクトフィルタリング機能の判定方法

Ajaxプロダクトフィルタリング機能の判定方法

WBOY
WBOYオリジナル
2016-06-13 12:01:491369ブラウズ

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
を取り出す場合、配列
をトラバースします。 -----------------------------
たとえば、製品のオプションの 1 つは (適用環境: すべての Office現代ヨーロッパ風)
$peistr が「該当する環境」の ID、$liest がその後のサブオプションの ID
受け取り方法の詳細は載せません。 🎜> 以下の for ループがなぜ 2 減算されるのかを考える必要はありません。
以下は、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の小項目をクリックすると、ID1と3のIDが条件に追加されます
問題は、初回受信はOKですが、201をクリックすると、 2回目以降は条件を満たしていないはずですが、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 は判定対象の文字列ですもしの場合。 $whereが何であっても判定処理はできません。これは単なるアイデアです。見てください
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。