Изменить с радио на флажок и SQL с несколькими категориями
Я ищу идею изменить радио на флажок и сделать SQL SELECT с ним:
Теперь пользователь выбирает категорию по форме радио (одна категория) код:
$zapytanie = $pdo->prepare('SELECT * FROM pytania_new WHERE Kategoria = :kategoria');
и сценарий покажет все вопросы с одной категорией, которую мы выбрали.
Теперь я хотел бы выбрать несколько категорий, поэтому я изменил свой текущий код, чтобы показать форму флажка и сохранить выбранную категорию в массив, но теперь я не знаю, как сделать SQL, который показывает мне вопросы с несколькими категориями
$zapytanie = $pdo->prepare('SELECT * FROM pytania_new WHERE Kategoria = :kategoria AND :kategoria2');
это не хочет работать.
и следующая проблема заключается в том, как проверить, сколько категорий SQL следует загружать из базы данных.
Я надеюсь, что вы поможете мне с этим:)
3 ответа
Вы можете сделать это с помощью простого цикла.
$categories = array("first","second");
$query = "";
$delimiter = "";
foreach($categories as $category) {
$query .= $delimiter . "kategoria = $category";
$delimiter = " OR "; //Dont really know how your sql looks but this makes more sense. Otherwise change to AND if a row can have multiple categories
}
$sql = "SELECT * FROM pytania_new WHERE $query";
AND
Оператор требует, чтобы столбец был упомянут, а не значение Так в вашем случае Kategoria = :kategoria AND Kategoria2 = :kategoria2
Но у нас нет вашей структуры, может быть, у вас нет второго столбца, поэтому вам нужно получить 2 строки в результате? Тогда используйте OR
оператор:
Kategoria = :kategoria OR Kategoria = :kategoria2
Итак, сначала мы должны создать строку со всеми категориями:
$kategorie = join(',',$kategoria);
После этого появляется простой SQL, который может найти несколько категорий в базе
$zapytanie = $pdo->prepare("SELECT * FROM pytania_new WHERE Kategoria IN ($kategories)");
и это все:)