Изменить с радио на флажок и 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)");

и это все:)

Другие вопросы по тегам