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