[英]PHP SQL get values with complex checkbox filter
我有 3 張桌子
在第一個我有我的產品,第二個我有產品的 id 和功能的 id,第三個我有可以不同的功能 colors,尺寸,材料......
我建立了一個過濾器菜單,顏色為藍色、紅色、白色、黑色......尺寸 XL LM S...... 當用戶選擇它時,腳本會發送一個 AJAX 請求來顯示產品......表單輸入是復選框類型。 ..
問題是我發送了一個 object ,每次用戶選擇某些東西時都會填寫
例子
object = {
"color": [13215, 23154, 21658,...],
"size": [5123, 6574, 9875,...]
}
arrays 充滿了 id_features 當我 print_r 文件上的數據時。php 它向我展示了我想要的東西。
所以我的問題是在 SQL 查詢,我有類似的東西
$features = implode("','", $ajaxArray['feature']); //ajaxArray is the object sent by JS
$query = "SELECT id_product FROM product_feature WHERE id_feature IN ('$features')";
因此,如果我在過濾器中選擇例如“red”和“XL”,它會向我顯示每個具有“red”功能或“XL”功能的產品,而我想要的只是具有“red”和“XL”功能的產品... 如果一個產品有紅色但沒有 XL,我不希望他們展示!!!
您要求 Mysql 做的是
SELECT id_product FROM product_feature WHERE id_feature IN ('XL', 'red')
所以,它正在做你要求它做的事情,“IN”子句是一個隱含的“OR”
你需要一個更復雜的查詢,有幾種方法可以做到這一點,但這里有一個問答方式
$sql = "SELECT id_product FROM product_feature
WHERE id_feature IN ('$features')
group by id_product having count() = " . sizeof( $ajaxArray['feature'] );
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.