Использование элементов формы с несколькими вариантами значений

Задача
Есть элемент с несколькими значениями, такой как checkbox или select, но PHP видит только одно значение.

Решение
Вставьте квадратные скобки ([]) после имени переменной:

The Bronx
Brooklyn
Manhattan
Queens
Staten Island

В тексте программы рассматривайте эту переменную как массив:

print 'I love ' . join(' and ', $boroughs) . '!';

Обсуждение
Размещение квадратных скобок после имени переменной приказывает PHP считать переменную массивом, а не скалярной переменной. Когда PHP видит, что этой переменной присваивается другое значение, он автоматически увеличивает размер массива и размещает новое значение в конце этого массива. Выбор первых трех пунктов в разделе «Решение» был бы эквивалентен следующему коду в начале сценария:

$boroughs[] = "bronx";
$boroughs[] = "brooklyn";
$boroughs[] = "manhattan";

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

foreach ($_GET['boroughs'] as $b) {
$boroughs[] = strtr($dbh->quote($b),array('_' => '\_', '%' => '\%'));
}
$locations = join(',', $boroughs);
$dbh->query("SELECT address FROM locations WHERE borough IN ($locations)");

Этот синтаксис работает также с многомерными массивами:

New York...
Если элемент отмечен, то он устанавливает элемент массива $population['
NY']['NYC'] в 8008278.

Размещение квадратных скобок [] после имени переменной может вызвать проблемы в JavaScript при попытке обратиться к элементам.


Вместо обращения к элементам по имени используйте числовой идентификатор. Можно также поместить имя элемента в одинарные кавычки. Другой путь состоит в том, чтобы присвоить элементу идентификатор; можно взять имя без квадратных скобок [], а затем использовать этот идентификатор. Дано:



следующие три конструкции относятся к одному и тому же элементу
формы:
document.forms[0].elements[0]; // использование числового
идентификатора
document.forms[0].elements['myName[]']; // использование имени
в кавычках
document.forms[0].elements['myName']; // использование идентификатора,
назначенного вами

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Защита от многократной отправки одной и той же формы
Кэширование запросов и результатов
Обработка внешних переменных с точками в именах
Обработка загруженных файлов
Обработка информации, полученной из формы

Вернуться в раздел: PHP / 9. Формы