В этой статье рассмотрим, как обрабатывать параметры, переданные нашему PHP скрипту от HTML форм.Создадим HTML-документ с формой, использующей все типы полей. А затем напишем сценарий, который будет обрабатывать переданные параметры.Пример кода:
Форма данныхТекстовое поле txt
Поле ввода пароля pswd
Скрытое поле hid
Вариант 1 (по умолчанию)Вариант 2МужчинаЖенщинаТекст по умолчанию Список без возможности множественного выбора:
ЯнварьФевральМартАпрельМайИюньИюльАвгустСентябрьОктябрьНоябрьДекабрь
Список с возможностью множественного выбора:
ЯнварьФевральМартАпрельМайИюньИюльАвгустСентябрьОктябрьНоябрьДекабрь
В окне браузера наша форма будет выглядеть так: Когда пользователь нажмет кнопу go, браузер передаст сценарию следующие параметры:
1. txt – значение текстового поля;
2. pswd – значение поля ввода пароля;
3. hid – значение скрытого поля;
4. параметры var1 и var2 будут переданы только, если соответствующие им переключатели активны (может быть передано одно из значений, обы значения или же ни одно из значений);
5. pol – значение группы зависимых переключателей (будет передано одно из значений – male или female);
6. t_area – содержимое текстовой области
7. month – значение обыкновенного списка
8. month[] – значение множественного списка
Теперь нам нужно разобраться, как обработать все эти параметры. Параметры txt, pswd, hid и t_area обрабатываются легко. Интерпретатор создает для каждого параметра переменную с соответствующим именем. Например, для отображения значения параметра txt достаточно написать:
echo «$txt»;
С параметрами var1 и var2 дело обстоит несколько сложнее. Если переключатель не активен, то параметры вообще не будут переданы на сервер, как будто бы вообще их и не было. Следовательно, не будет создана глобальная переменная и при попытке обращения к такой переменной, мы получим сообщение о том, что переменная не существует. Поэтому просто написать echo $var1; мы не можем: нужно предварительно проверить, существует ли переменная:
if (isset($var1)) echo «var1: $var1»;
if (isset($var2)) echo «var2: $var2»;
Только после проверки существования можно начинать работу с переменной.
Параметр pol, то есть наш зависимый переключатель, обрабатывается легко — браузер передает только одно из значений. Другими словами, параметр pol будет равен или male, или female. Поэтому можно просто вывести значение этого параметра: echo $pol;
Точно также обрабатывается параметр $month — это обыкновенный список без возможности множественного выбора, поэтому по сути его можно представить, как набор из 12 зависимых переключателей.
Сложнее всего обработать список с множественным выбором. Ведь в этом случае параметры передаются так:
name=value1&name=value2&name=value3…
При стандартном подходе переменная $name будет содержать только последнее значение (valueN). Однако разработчики PHP позаботились об этом: множественный список можно представить в виде массива, а обработать его элементы можно с помощью цикла foreach. Нам даже не нужно знать количество переданных элементов списка. Предварительно лишь нужно сообщить PHP, что мы будем передавать массив:
Квадратные скобки — это признак массива. Обрабатывается массив так:
foreach($month2 as $key=>$value)
echo «$key = $value
«;
Окончательный листинг сценария form.php представлен ниже:
Предположим, что в текстовое поле txt мы ввели имя Denis, в поле пароля — my_password, выбрали только вариант 2, установили параметр pol в значении male, заполнили текстовую область, в первом списке выбрали Январь, а во втором — первые три месяца. В результате мы получим такой вывод PHP сценария:
Вывод сценария в особых комментариях не нуждается, кроме трансляции списков. Как вы видите, передается не строка (Январь), а заданное значение value (01). Если не указывать значение value, то значением параметра станет строка, заключенная в тег option. Также обратите внимание на трансляцию множественного списка: выводится номер элемента (0, 1, 2) и значения (01, 02, 03) элементов массива.