Получить данные POST от нескольких флажков? - PullRequest
16 голосов
/ 05 октября 2011

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

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

 <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'];

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

Ответы [ 3 ]

45 голосов
/ 05 октября 2011

Назовите поля как 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>";
     }
    
4 голосов
/ 05 октября 2011

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

<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

и т.д ...

0 голосов
/ 05 октября 2011
<input type="checkbox" value="Other" name="service">Other<input type="hidden" value="Other" name="service"></span>

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...