среда, 5 ноября 2008 г.

Работа со списками

Передача (или, иначе, трансляция) полей формы работает корректно в случае, если каждый элемент формы имеет свое уникальное имя. Если же это не так, то в качестве значения передается последнее значение.
Например:
<select name="Vybor" multiple>
<option />1
<option />2
<option />3
<option />4
<option />5
</select>
если выбрать в этой форме любые две строки (3 и 5), то передано будет значение только последней выбранной (Vybor=5).
Выход из этой ситуации предлагает автомассив.
<select name="Vybor[]" multiple>
<option />1
<option />2
<option />3
<option />4
<option />5
</select>
По умолчанию он начинается с нулевого элемента и при пустом аргументе в квадратных скобках [номере элемента массива] добавляет еще один элемент за последним.
Теперь при множественном выборе будем иметь Vybor[]=3&Vybor[]=5
Переменная окружения $_REQUEST[], сама являющаяся массивом, будет тогда содержать в себе еще один массив, т.е. при обработке запроса оперировать следует 2-мерным массивом данных:
echo $_REQUEST['Vybor'][0]; // будет выведено 3
echo $_REQUEST['Vybor'][1]; // будет выведено 5
Автомассивы могут применяться с любыми элементами формы, не только с <select>
И поскольку массивы могут содержать различные элементы, то один и тот же автомассив может быть одновременно применен для разных элементов.

Комментарии: 0:

Отправить комментарий

Подпишитесь на каналы Комментарии к сообщению [Atom]

<< Главная страница