我正在使用opencart,我在产品列表中制作了一些过滤器,管理员可以选择产品属性并过滤产品。
现在,我选择例如。瓦特= 11,伏特= 240,显示5个产品有11瓦,5个产品有240伏,10个产品。
但我只想展示11瓦特和240伏特的产品。
var_dump中的属性如下:
array(3) { [0]=> array(2) { ["attribute_id"]=> string(2) "17" ["values"]=> string(4) "[11]" } [1]=> array(2) { ["attribute_id"]=> string(2) "18" ["values"]=> string(6) "[240]" }
这是我使用的代码 加入
if(!empty($data['filter_product_attributes'])) {
$sql .= " LEFT JOIN " . DB_PREFIX . "product_attribute pa ON (p.product_id = pa.product_id)";
}
我在字符串$ attribute_ids中添加所有属性,分隔ids和在attribute_texts中分隔文本,并从下面使用AND ... IN
$sql .= " AND pa.attribute_id IN (".$attribute_ids.")";
$sql .= " AND pa.text IN (".$attribute_texts.")";
我已经尝试过HAVING子句($ ids和$ texst是数组)但它没有按预期工作:
$sql .= " HAVING";
$idc = 0;
foreach($ids as $id) {
if($idc == 0) {
$sql .= " sum(pa.attribute_id = ". $id .") > 0";
}
else {
$sql .= " and sum(pa.attribute_id = ". $id .") > 0 ";
}
$idc +=1;
}
$txc = 0;
foreach($texts as $text) {
$sql .= " and sum(pa.text = ". $text .") > 0";
}
}
如何显示已选择所有属性的产品?有什么想法吗?