Мне нужно отфильтровать данные на сайте, используя форму HTML. Я сделал форму, и я знаю, как отфильтровать один тип данных.
Вот как выглядит код для формы:
<form method="POST" action="">
<strong>Brand:</strong> <br>
<input type="checkbox" name="Input_1" value="Input 1"/> Input 1 <br>
<input type="checkbox" name="Input_2" value="Input 2"/> Input 2 <br>
<input type="checkbox" name="Input_3" value="Input 3"/> Input 3 <br>
</form>
А вот мой код для системы фильтрации:
if($_POST['Input_1'] == "Input 1"){
$query->addFilter("{Table Column}='Input 1'");
}
elseif($_POST['Input_2'] == "Input 2"){
$query->addFilter("{Table Column}='Input 2'");
}
elseif($_POST['Input_3'] == "Input 3"){
$query->addFilter("{Table Column}='Input 3'");
}
addFilter
Функция встроена в плагин, который я использую для WordPress, и применяет указанный фильтр к базе данных Airtable, которую я использую. Критерии внутри if
а также elseif
Statement проверяет, установлен ли флажок, а затем применяет любой фильтр, указанный для данных, извлеченных из базы данных.
У меня проблема в том, что я могу фильтровать только по одному критерию, поэтому, например, если я проверяю и вход 1, и вход 2, он фильтрует только строку кода самого верхнего уровня и фильтрует только элементы ввода 1 (что имеет смысл, так как он читает это и не нужно переходить к следующему elseif
).
Что было бы лучшим способом отформатировать это так, чтобы я мог фильтровать по намного более обширным критериям в то же время?
Во-первых, если ваши входные данные связаны, я бы сделал их массивом входных данных:
<input type="checkbox" name="Input[1]" value="Input 1"/> Input 1 <br>
<input type="checkbox" name="Input[2]" value="Input 1"/> Input 1 <br>
Или, возможно, более уместно:
<input type="checkbox" name="Input[myform][1]" value="Input 1"/> Input 1 <br>
<input type="checkbox" name="Input[myform][2]" value="Input 1"/> Input 1 <br>
Когда у вас есть это, теперь вы можете циклически проходить по входам:
foreach ($_GET['Input']['myform'] as $k => $v) {
$query->addFilter("{Table Column}=".$v);
}
Примечание: этот код не проверен, но должен предоставить общую идею.
Это то, что ты искал?
Других решений пока нет …