/ / uzyskiwanie danych za pomocą pól wyboru - php, mysql

pobieranie danych za pomocą pól wyboru - php, mysql

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 № 1

Ponieważ 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 ANDlub możesz mieć inne warunki, filtry itp ...