Получить 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'];

Я получаю только "другие"

Ответы

Ответ 1

Назовите поля типа 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>";
     }
    

Ответ 2

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

<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

и т.д...

Ответ 3

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

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

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