Здравсвуйте, я делаю фильтр товаров по параметрам.
С тем кодом, что сейчас, фильтрация работает правильно, только если выбрать и метал и вставку. А если выбираю что-то одно, то ничего не находит. Скажите в чем ошибка. Или подскажите как сделать.
PHP:
скопировать код в буфер обмена
<?PHP if ($_GET["value_param"]) { $check_metal = implode(',',$_GET["value_param"]); $check_rock = implode(',',$_GET["value_param"]); } $start_price = (int)$_GET["start_price"]; $end_price = (int)$_GET["end_price"]; { if (!empty($check_metal)) $query_metal = " AND metal_param IN($check_metal)"; if (!empty($check_rock)) $query_rock = " AND rock_param IN($check_rock)"; if (!empty($end_price)) $query_price = " AND price BETWEEN $start_price AND $end_price"; } //вывод товара $result = mysql_query("SELECT * FROM products WHERE visible='1' $query_price $query_metal $query_rock ORDER BY id_products DESC",$db) or die(mysql_error()); //проверка наличия товаров { do { echo ' <li> <p class="title-view"><a href=""><b>'.$row["title"].'</b></a></p> <a class="add-basket-view"></a> <p class="price-view"><strong>'.$row["price"].' руб.</strong> </p> </li>'; } } else { echo '<p>Категория не доступна или товаров данной категории нет </p>'; } echo '</ul>'; ?>
без if (!empty($check_rock)) $query_rock = " AND rock_param IN($check_rock)"; все работало хорошо.
|