Я начинающий PHP и MySQL, поэтому, пожалуйста, держите свои ответы простыми !!!Использование флажков для фильтрации записей PHP MySQL
У меня есть база данных, в которой перечислены группы пенсионеров и сервисы, которые они предлагают. У меня есть ряд полей, использующих логический (tinyint), и если они предлагают услугу, они получают 1. Если они этого не делают, то получают 0.
У меня есть отображение хорошо, но теперь я пытаюсь отфильтруйте список, используя флажки. Я также ищу по городу и штату (которые работают), но как только я добавляю свой код для флажков, он терпит неудачу. Он просто показывает все записи независимо от того, что. Вот что у меня есть:
HTML:
<form action="" method="post">
<fieldset><legend>Filter</legend>
<p><label>City: </label><input type="text" name="by_city" /></p>
<p><label>State: </label><input type="text" name="by_state" /></p>
<p>
<input type="checkbox" name="IndependentLiving" value="1" /> Independent Living<br>
<input type="checkbox" name="AssistedLiving" value="1" /> Assisted Living<br>
<input type="checkbox" name="SkilledNursing" value="1" /> Skilled Nursing<br>
<input type="checkbox" name="MemoryCare" value="1" /> Memory Care<br>
<input type="checkbox" name="ContinuingCareCommunity" value="1" /> Continuing Care Community<br>
<input type="checkbox" name="Respite" value="1" /> Short-term/Respite<br>
</p>
<p><input class="button" type="submit" name="submit" value="Search" /></p>
</fieldset>
</form>
PHP код:
$by_city = $_POST['by_city'];
$by_state = $_POST['by_state'];
$IndependentLiving = $_POST['IndependentLiving'];
$AssistedLiving = $_POST['AssistedLiving'];
$SkilledNursing = $_POST['SkilledNursing'];
$MemoryCare = $_POST['MemoryCare'];
$ContinuingCareCommunity = $_POST['ContinuingCareCommunity'];
$Respite = $_POST['Respite'];
mysql_select_db('CommunityList');
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$query = "SELECT * FROM Communities WHERE (City='$by_city') OR (State='$by_state') OR (IndependentLiving='$IndependentLiving') OR (AssistedLiving='$AssistedLiving') OR (SkilledNursing='$SkilledNursing') OR (MemoryCare='$MemoryCare') OR (ContinuingCareCommunity='$ContinuingCareCommunity') OR (Respite='$Respite')";
}
else {
$query = "SELECT * FROM Communities";
}
$result = mysql_query($query);
Флажки указаны только в том случае, если они отмечены. Поэтому вам нужно установить значение по умолчанию, т.е. '0', если он не установлен. Вы можете использовать тройку, чтобы сделать это. то есть. '$ IndependentLiving = isset ($ _ POST ['IndependentLiving'])? $ _POST ['IndependentLiving']: 0; '. Это говорит о том, установлен ли '$ _POST ['IndependentLiving']', т.е. 'name =" IndependentLiving "' был проверен, используйте его значение. если нет, то используйте значение «0» в качестве значения. – Sean
Кроме того, как правило, если вы хотите отфильтровать эти флажки, вы должны использовать 'AND IndependentLiving = 1', чтобы оно требовало этого значения. Таким образом, еще одна альтернатива заключается только в добавлении этих фильтров, когда они проверены, и удалять их из запроса при снятии флажка. – Sean
Если вы видите 'action =" "' подразумевает, что вы используете весь свой код в том же файле, и вы должны получать неопределенные индексные заметки * сразу же с места *. Таким образом, вам нужно будет отрегулировать свой код в соответствии с ответом (ответами), если они не упомянули его/не компенсировали. Сообщение об ошибке сообщит вам, что http://php.net/manual/en/function.error-reporting.php –