Как использовать $ _POST или $ _GET для фильтрации данных на основе HTML-формы

Мне нужно отфильтровать данные на сайте, используя форму 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).

Что было бы лучшим способом отформатировать это так, чтобы я мог фильтровать по намного более обширным критериям в то же время?

0

Решение

Во-первых, если ваши входные данные связаны, я бы сделал их массивом входных данных:

<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);
}

Примечание: этот код не проверен, но должен предоставить общую идею.

Это то, что ты искал?

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]