Элемент <SELECT> потенциально может использоваться для выбора нескольких элементов и потому передаст несколько значений PHP-сценарию. К сожалению, установка атрибута NAME в значение вроде myselect создаст переменную $_GET [ 'myselect' ], которая будет содержать только последний выбранный элемент списка. Очевидно, это не желательный результат, следовательно, нужно использовать другой метод. Чтобы решить эту проблему, РНР позволяет создавать массивы динамически, на базе отправки формы, за счет добавления квадратных скобок в конец имени элемента. То есть, myselect станет myselect [], вынуждая РНР добавлять элементы в массив $_GET[ 'myselect' ] вместо того, чтобы перезаписывать предыдущее значение. Эта концепция проиллюстрирована в листинге 4.13.
Листинг 4.13. Использование массивов с данными формы в РНР
Код HTML:
<SELECT NAME="myselect[]" MULTIPLE SIZE=3>
<OPTION VALUE="valuel">Bbi6epMTe меня!</OPTION>
<OPTION VALUE="value2">HeT, меня!</OPTION>
<OPTION VALUE="value3">3a6yflbTe их и выберите меня!</OPTION>
«DPTION VALUE="value4">Bu6epMTe меня, я же лучший!</OPTION>
</SELECT>
PHP-ход для доступа к выбранным элементам:
foreach($_GET['myselect'] as $val) { echo "Выбрано: $val "; } echo "Выбрано: ".count($_GET['myselect']); ?>
Эта техника не ограничивается только элементом <SELECT> или массивами, индек-
сированными целыми числами. Если вы хотите использовать строковый ключ для оп-
ределенного элемента формы, укажите его (без кавычек) внутри квадратных скобок:
<!JNPUT TYPE="text" NAME="data[email]" VALUE="joe.doe@joe.doe.com">
При отправке формы предыдущие значения текстовых полей будут доступны с помощью синтаксиса $_GET [' data ' ] ['email'].
|