Получить 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, это похоже на то, что вы хотите использовать переключатель, который позволяет выбрать только одну группу из одинаковых полей. Флажки - это ситуация "И", переключатели соответствуют "ИЛИ"