Próbuję zrobić filtr produktu w php za pomocą pól wyboru, w zasadzie mógłbym go wyświetlić produkty z jednym filtrem, ale jestem zagubiony, jak zrobić wiele pól wyboru do współpracy ze sobą.
Oto czego próbowałem:
część, w której zmienia polecenie sql
if (isset($_GET["checkDress"])){
if (empty($where)){
$where=" where category = "kleit"";
}elseif(!empty($where)){
$where.=" and category = "kleit"";
}
}
if (isset($_GET["nightDress"])){
if (empty($where)){
$where=" where category = "oKleit"";
}elseif(!empty($where)){
$where.=" and category = "oKleit"";
}
}
polecenie sql:
$res=mysql_query("select * from items $where $filter");
zaznaczenie jednego z pól wyboru jest w porządku, zwraca poprawny wynik, ale zaznaczenie 2 w tym samym czasie nie zwraca niczego w ogóle. Każda pomoc byłaby bardzo doceniana.
Odpowiedzi:
1 dla odpowiedzi № 1Ponieważ wygląda na to, że sukienki nie mogą jednocześnie zaspokoić wielu kategorii, wydaje się, że chcesz z nich korzystać or
dla filtra, a nie dla and
. To byłaby łatwa poprawka, ale myślę, że możesz znacznie poprawić to rozwiązanie.
<!-- pass filters as array -->
<input name="filter[]" type=checkbox value=kleit>
<input name="filter[]" type=checkbox value=oKleit>
$filters = $_GET["filters"];
$params = array_fill(0, count($filters), "?");
if ($params) {
$where = "WHERE category IN (" . implode(",", $params) . ")";
}
0 dla odpowiedzi nr 2
coś takiego?
$where = " WHERE ";
$conditions = array();
if (isset($_GET["checkDress"])){
$conditions[] = "category = "kleit"";
}
if (isset($_GET["nightDress"])){
$conditions[] = "category = "oKleit"";
}
$where .= implode($conditions, " AND ");
Może użyć IN
zamiast wielu AND
lub możesz mieć inne warunki, filtry itp ...