Как читать входные данные формы по типу? - PullRequest
0 голосов
/ 26 октября 2011

У меня есть форма:

<form name="form1" method="post" action="form_to_write.php">
    <h4>q1</h4>
    <input type="radio" name="a1" value="someValue1" />someValue1<br />
    <input type="radio" name="a1" value="someValue2" />someValue2<br />
    <input type="radio" name="a1" value="someValue3" />someValue3
    <h4>q2</h4>
    <input type="radio" name="a2" value="someValue4" />someValue4<br />
    <input type="radio" name="a2" value="someValue5" />someValue5<br />
    <input type="radio" name="a2" value="someValue6" />someValue6
    <h4>q3</h4>
    <input type="radio" name="a3" value="someValue9" />someValue9<br />
    <input type="radio" name="a3" value="someValue7" />someValue7<br />
    <input type="radio" name="a3" value="someValue8" />someValue8
    <input type="submit" value="submit" name="submit"/>
</form>

И хотите прочитать все входные данные в массив по типу (радио). Я знаю, как читать по имени, но как по типу?

Ответы [ 4 ]

3 голосов
/ 26 октября 2011

Атрибут input type не отправляется на сервер при отправке формы. Отправляются только name и value. Вам нужно будет следить за тем, что вы сами на сервере, используя полезные name s.

1 голос
/ 26 октября 2011

Если вы ищете функцию PHP, такую ​​как GetAllInputsOfType("radio"), то вы ее не найдете (если только вы не можете сделать что-то необычное с DOM, как это делает JS; может быть, это поможет ?).

Что я сделал в аналогичных обстоятельствах, так это переименовал мои поля ввода в соответствии с типом, поэтому вместо a1, a2, a3 у вас могут быть radio_a1, radio_a1, radio_a3 и text_a4, memo_a5, listbox_a6 и т. Д. (ИКстати, используйте некоторые значащие имена, а не a1, a2, a3; -)

Затем вы можете пройтись по массиву $ _GET или $ _POST, ища элементы, начинающиеся radio_ ...

1 голос
/ 26 октября 2011

сделайте ваш form_to_write.php таким:

<?php
print_r($_POST);

и изучите его вывод.
Он содержит все, что вы можете получить из формы.Вы можете выбирать, что использовать.Наслаждайтесь.

Поскольку ваш вопрос является прекрасным примером плохо заданного вопроса, я могу только угадать ваши реальные потребности .

Кажется, вы хотите получить массив, содержащий все переключатели.Вы все еще можете сделать это, используя имена.

сделайте так, чтобы названия ваших переключателей были такими:

<input type="radio" name="radios[a1]" value="someValue1" />someValue1<br />

<input type="radio" name="radios[a2]" value="someValue4" />someValue4<br />

<input type="radio" name="radios[a3]" value="someValue9" />someValue9<br />

, и вы сможете получить доступ к массиву $_POST['radios'], который содержит все ваши поля радио

0 голосов
/ 26 октября 2011

Вы можете использовать что-то вроде Zend_Form, которое отслеживает это (и может даже выполнять проверку работ и т. Д.).Но вы не можете получить тип поля формы с помощью только php - вам нужно будет что-то делать в JS, который находится на стороне клиента и может не доверять.

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