Результаты с множественным выбором

0

Привет, у меня есть следующая проблема:

$result1 = 'Produkt 1'; (contains in database: option1 = A, option2 = '')

$result2 = 'Produkt 2'; (contains in database: option1 = ABS, option2 = '1F')

$result3 = 'Produkt 3'; (contains in database: option1 = FP, option2 = 'F')

Теперь у меня есть formearch с флажками для параметров, и я хочу только проверенные результаты:

<input name="asia" type="checkbox" id="asia" value="A" />
<input name="bio" type="checkbox" id="bio" value="B" />
<input name="break" type="checkbox" id="break" value="F" />
<input name="piz" type="checkbox" id="piz" value="P" />
<input name="south" type="checkbox" id="south" value="S" />

<input name="glut" type="checkbox" id="glut" value="1" />
<input name="lak" type="checkbox" id="lak" value="F" />

псевдокод:

if ($_POST of all checkboxes == ''){ 
   echo all results
}

if ($_POST['asia']!=''){
   echo only results with A in option1
}

if ($_POST['asia']!='' && $POST['bio']!=''){
      echo only results with A and B in option1
}

if ($_POST['break']!='' && $POST['piz']!='' && $POST['lak']!=''){
      echo only results with F and P in option1 and F in option2
}

Мне всегда нужны продукты, которые сравниваются со всеми выбранными флажками.

Я знаю, что могу сделать для каждой возможности if или elseif, но есть ли более быстрый способ, например, с массивами

Большое спасибо за каждое предложение

Теги:
if-statement
search
checkbox

1 ответ

2

Обычный подход к этому заключается в том, чтобы дать всем флажкам одно и то же имя (которое должно заканчиваться на [], например name="name[]"), а затем обрабатывать $_POST['name'] как массив, содержащий значения всех отмеченные флажки.

Вы можете зациклиться на нем, чтобы иметь дело со всеми имеющимися вами элементами или использовать in_array чтобы узнать, существует ли определенное значение.


Если вам нужно иметь дело с наборами данных, вы можете использовать:

<input type="checkbox" name="name[asia][]" value="foo">
<input type="checkbox" name="name[asia][]" value="bar">

И тогда $_POST['name'] будет ассоциативным массивом, содержащим массивы.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню