我正在尝试为我正在开发的一家小店设置一个过滤系统。基本上,我正在将结果从一系列变量中去除。如果没有querystring,页面,products.php将显示所有产品。但是,如果存在变量,我希望它在必要时更改select语句。php select声明依赖于变量存在
但是,我有问题筛选。如果我对所有变量使用AND语句,它不适当地过滤它们。所以如果我想要黑色尺码5的鞋子,它会显示所有五号尺寸,不管颜色。
有没有更好的方法来采取这与成为一个公平的老头抓手!
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条件进行比较 – 2011-06-02 15:27:32