私は開発中の小さな店のためのフィルタシステムをセットアップしようとしています。基本的には、結果を変数リストから取り除いています。ページ、products.phpにクエリーストリングがない場合、すべての製品が表示されます。しかし、変数が存在する場合は、必要に応じてselect文を変更したい。php select文は変数に依存しています
ただし、フィルタリングに問題があります。すべての変数にANDステートメントを使用すると、適切にフィルター処理されず、ORも正しく処理されません。だから、私は黒のサイズ5の靴をしたい場合は、色に関係なくすべてのサイズのfivesを表示するだろう。
これと一緒に取るより良いアプローチは、かなり古い頭の傷者になっていますか?
if ($queryString == NULL){
$query = "SELECT * FROM store_products
JOIN store_cat on store_products.cat=store_cat.cat_id
JOIN prod_sizes on store_products.prod_id=prod_sizes.product_id
JOIN prod_color on store_products.prod_id=prod_color.product_id
GROUP BY store_products.prod_id";
}else{
$query = "SELECT * FROM store_products
JOIN store_cat on store_products.cat=store_cat.cat_id
JOIN prod_sizes on store_products.prod_id=prod_sizes.product_id
JOIN prod_color on store_products.prod_id=prod_color.product_id
where store_products.sale='$sale' OR prod_color.color='$color' OR prod_sizes.size='$size' OR store_products.cat='$cat' GROUP BY store_products.prod_id";
}
例文字列変数
products.php?sale=&cat_id=1&size=&color=Yellow
最初のOR条件が真であれば、それ以上は比較されません。また、特定のレコードのみを返す場合は、色とサイズをAND条件と比較する必要があります –