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

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

А вот мой код для фильтрацииsystem:

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

Проблема, с которой я сталкиваюсь, заключается в том, что я могуфильтровать только по одному критерию, поэтому, например, если я проверяю и вход 1, и вход 2, он фильтрует только строку кода самого верхнего уровня и фильтрует только элементы ввода 1 (что имеет смысл, поскольку он читает это и не нуждается вперейдите к следующему elseif).

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

1 Ответ

0 голосов
/ 18 мая 2018

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

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

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

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

...