Сделать выборку по нескольким полученым данным
делаю фильтр товаров, написал вот такой скрипт:
// Получаем данные формы
$cat_id = $_POST['cat_id'];
$get_ves = $_POST['f__ves']; // Вес
$get_material = $_POST['f__material']; // Материал
// Получаем id товаров текущей категории
$sql = "SELECT * FROM `oc_product_to_category` WHERE category_id = '" . $cat_id . "' ";
$query = mysqli_query($dbh, $sql);
$product_id_arr = array();
while ($row = $query->fetch_assoc()) {
$product_id_arr[] = $row['product_id'];
}
// Выполняем запрос на получение товаров
if ($product_id_arr) {
foreach ($get_ves as $get_ves_item) {
foreach ($product_id_arr as $prod_id) {
$prod_get_attr = "SELECT * FROM `oc_product_attribute` WHERE product_id = '" . $prod_id . "' AND attribute_id = '" . 28 . "' AND text = '" . $get_ves_item . "'"; // получаем id товаров, выбранных атрибутов Вес
$query_prod_get_attr = mysqli_query($dbh, $prod_get_attr);
foreach ($query_prod_get_attr as $product_id) {
$product_val[] = $product_id['product_id'];
}
}
}
var_dump($product_val);
}
Скрипт работает сйечас по $get_ves. Не понятно, как сделать выборку по нескольким полученым данным методом POST, к примеру если будет получен еще и material ($get_material). Думаю можно написать как то так:
"SELECT * FROM `oc_product_attribute` WHERE product_id = '" . $prod_id . "' AND attribute_id = '" . 28 . "' AND text = '" . $get_ves_item . "' AND text = '" . $get_meterial_item . "'";
то-есть добавить еще один AND, но что делать если этот параметр не будет получен? Как правильно сделать подскажите, пожалуйста.
if (isset($_POST['f__ves']) and isset($_POST['f__material'])) {
echo "существует пост материал и есть вес";
$get_ves = $_POST['f__ves']; // Вес
$get_material = $_POST['f__material']; // Материал
if ($product_id_arr) {
foreach ($get_ves as $get_ves_item) {
foreach ($get_material as $get_ves_item) {
foreach ($product_id_arr as $prod_id) {
$prod_get_attr = "SELECT * FROM `oc_product_attribute` WHERE (product_id, attribute_id, text) in( ('" . $prod_id . "', 28, '" . $get_ves_item . "'), ('" . $prod_id . "', 29, '" . $get_materail_item . "') )"; // получаем id товаров, выбранных атрибутов Вес и материал
$query_prod_get_attr = mysqli_query($dbh, $prod_get_attr);
foreach ($query_prod_get_attr as $product_id) {
$product_val[] = $product_id['product_id'];
}
}
}
}
var_dump($product_val);
}
}