PHP: флажки и вопрос имени - PullRequest
4 голосов
/ 22 апреля 2011

Я впервые пишу в PHP скрипт для обработки формы POST, содержащей флажки.

Как вы знаете, флажки группируются по одному и тому же атрибуту имени и при нескольких значенияхпроисходит, $ _POST ["some_name"] должен хранить их в массиве.

Я тестировал, но вместо ожидаемого массива я получил одно единственное значение - значение последнего проверенного элемента.

В этот момент, несколько озадаченный, я смотрю на документ, чтобы обнаружить, что в PHP имя флажка должно заканчиваться [].Это так?Какая безумная связь между HTML-формой и сценарием, который ее обрабатывает?Предположим, у меня нет доступа к именам полей HTML?Предположим, что, как и в моем случае, у меня есть все веские основания не изменять мою схему именования только из-за какой-то неясной глупости.

Теперь кажется, что существует хотя бы одно решение проблемы: PHP:Получение значения флажков, когда имя не имеет массива

Я хотел бы знать, есть ли действительно простой способ обойтись без этих сумасшедших скобок, и, кстати, ваше мнение на этот счет?Я единственный, кто в шоке?

РЕДАКТИРОВАТЬ: ОК, я, конечно, могу обойти эту проблему, но я надеялся поднять некоторые (незначительные еще) фундаментальный вопрос относительно своего рода "неразделение проблем "между HTML и PHP.Очевидно, что дело PHP не в том, как писать HTML-код.

Ответы [ 3 ]

0 голосов
/ 22 апреля 2011

Почему вы не включили [] в вашу схему именования? Я не думаю, что это особенно шокирует. Что касается PHP, возможно, вы действительно ожидали получить значение только от последнего элемента с этим конкретным именем.

Существуют некоторые альтернативы, такие как та, которую вы включили в свой вопрос, или извлечение значений с помощью хитрости javascript, но я не думаю, что вы найдете такую, которая проще, чем просто добавление скобок к имени ваших флажков.

0 голосов
/ 22 апреля 2011

Вы должны попробовать с

<input type="checkbox" name="mycheckbox[]" value="Male" />
<input type="checkbox" name="mycheckbox[]" value="Female" />

In php side,

$myCheckBoxCollection = $_REQUEST['mycheckbox'];
0 голосов
/ 22 апреля 2011

В вашем html-коде для флажков:

name="mycheckboxname[]"

...