Получить POST-данные из нескольких флажков?

Я пытаюсь создать форму с помощью PHP, и я не могу найти учебник о том, что мне нужно, поэтому подумал Id.

У меня есть несколько флажков на моей странице …

<li> <label>What service are you enquiring about?</label> <input type="checkbox" value="Static guarding" name="service">Static guarding<br> <input type="checkbox" value="Mobile Patrols" name="service">Mobile Patrols<br> <input type="checkbox" value="Alarm response escorting" name="service">Alarm response escorting<br> <input type="checkbox" value="Alarm response/ Keyholding" name="service">Alarm response/ Keyholding<br> <input type="checkbox" value="Other" name="service">Other<input type="hidden" value="Other" name="service"></span> </li> 

Однако я не уверен, как собрать все значения флажка, используя метод POST?

если я использую

 $service = $_POST['service']; 

Я получаю только «другое»

Назовите поля, такие как service[] вместо service , тогда вы сможете получить к нему доступ как массив. После этого вы можете применять регулярные функции к массивам:

  • Проверьте, было ли выбрано определенное значение:

      if (in_array("Other", $_POST['service'])) { /* Other was selected */} 
  • Получите одну строку, разделенную символом новой строки, со всеми выбранными параметрами:

      echo implode("\n", $_POST['service']); 
  • Прокрутите все выбранные флажки:

      foreach ($_POST['service'] as $service) { echo "You selected: $service <br>"; } 

В настоящее время он просто ловит ваш последний скрытый ввод. Почему у вас там скрытый вход? Если вы хотите собрать информацию, если установлен флажок «Другое», вам нужно скрыть

 <input type="text" name="other" style="diplay:none;"/> 

и вы можете показать его с помощью javascript, когда установлен флажок «Другое». Что-то вроде того.

Просто сделайте службу атрибута имени []

 <li> <label>What service are you enquiring about?</label> <input type="checkbox" value="Static guarding" name="service[]">Static guarding<br> <input type="checkbox" value="Mobile Patrols" name="service[]">Mobile Patrols<br> <input type="checkbox" value="Alarm response escorting" name="service[]">Alarm response escorting<br> <input type="checkbox" value="Alarm response/ Keyholding" name="service[]">Alarm response/ Keyholding<br> <input type="checkbox" value="Other" name="service[]">Other</span> </li> 

Тогда на вашем PHP вы можете получить к нему доступ так

 $service = $_POST['service']; echo $service[0]; // Output will be the value of the first selected checkbox echo $service[1]; // Output will be the value of the second selected checkbox print_r($service); //Output will be an array of values of the selected checkboxes 

и т.д…

 <input type="checkbox" value="Other" name="service">Other<input type="hidden" value="Other" name="service"></span> 

У вас есть скрытое поле ввода с тем же именем, что и флажок. «позже» поля с тем же именем, что и предыдущие, будут перезаписывать значения предыдущего поля. Это означает, что ваша форма, как указано выше, будет ВСЕГДА отправлять service=Other .

Учитывая формулировку вашего вопроса в html, это похоже на то, что вам нужен радиокнопка, которая позволяет выбрать только одну группу из одинаковых полей. Флажки – это ситуация «И», переключатели соответствуют «ИЛИ»,