PHP: проблема с флажками и именем


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

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

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

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

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

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

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

Author: Community, 2011-04-22

3 answers

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

name="mycheckboxname[]"

 0
Author: Aaria Carter-Weir, 2011-04-22 09:24:58

Вам следует попробовать с

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

In php side,

$myCheckBoxCollection = $_REQUEST['mycheckbox'];
 0
Author: Sanjay Mohnani, 2011-04-22 09:55:17

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

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

 0
Author: Lawyerson, 2011-04-22 11:16:13