Я пытался понять это на некоторое время, но я никуда не схожу. Я прочитал много других вопросов, размещенных здесь и через Интернет, но не могу найти решение. Специально в случае использования нескольких флажков.Множественный фильтр флажка в PHP
Пожалуйста, несите меня, когда я пытаюсь объяснить проблему, с которой я столкнулся.
На странице У меня есть список людей с их соответствующим местоположением, которые я вытаскиваю из базы данных, используя php/sql. То, что я пытаюсь достичь, - это возможность фильтровать список в соответствии с местоположением, используя флажки.
Это код, который у меня есть сейчас для флажков.
<ul>
<li><input type="checkbox" name="check_list[]" value="sydney">Sydney</li>
<li><input type="checkbox" name="check_list[]" value="durban">Durban</li>
<li><input type="checkbox" name="check_list[]" value="delhi">Delhi</li>
<li><input type="checkbox" name="check_list[]" value="cairo">Cairo</li>
<li><input type="checkbox" name="check_list[]" value="madrid">Madrid</li>
<li><input type="submit"></li>
</ul>
Это код, я использую, чтобы проверить, если флажок установлен и, соответственно, изменить запрос SQL
if (empty ($_POST['check_list'])) {
$SQLquery = 'SELECT * FROM `people`';
$query = $conn->query($SQLquery);
} elseif (!empty($_POST['check_list'])) {
foreach($_POST['check_list'] as $check)
$location = $check;
$query = $conn->prepare('SELECT * FROM `people` WHERE `p_location` = :location');
$query->execute(array('location' => $location));
}
Сейчас этот код работает прекрасно, когда только один флажок. Однако при проверке нескольких флажков это не выполняется. Он просто ничего не показывает.
Я знаю, что я могу изменить запрос SQL с помощью оператора OR
добавить в других местах, как так:
$query = $conn->prepare('SELECT * FROM `people` WHERE `p_location` = 'Delhi' OR `p_location` = 'Madrid')
Однако, я не могу понять, как я могу первый проверить, какие все флажки проверяются, а затем создайте инструкцию SQL таким образом, чтобы отфильтровать результаты, когда выбрано более одного города.
Мне также интересно, если это лучший способ добиться чего-то подобного или нет. Я открыт для альтернативных способов достижения этого в рамках php/sql.
Можете ли вы действительно связывать вложенные значения именно так? Вы добавляете часть синтаксиса SQL внутри значения, которое нужно связать, я не уверен, что он работает, и он выглядит грязным, imo. – Virus721
Даже не думал об этом. Приходится делать кое-что в Гоглине. ;) – Damiqib
@Damiqib Привет, спасибо за ваш быстрый ответ. Я пытался реализовать это, но напрасно. Он работает, когда выбран один флажок, но сбой при наличии нескольких вариантов. – ghosh