Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
WEB - Лабораторная работа_5 - PHP.pdf
Скачиваний:
91
Добавлен:
26.03.2015
Размер:
312.5 Кб
Скачать

Как видно, варианты выбора задаются с помощью тегов option. При отправке формы сценарию будет отослано значение value выбранного элемента списка.

Атрибут name определяет имя параметра, который будет передан сценарию. Если атрибут size равен 1, то список будет выпадающим. В противном случае список будет занимать п строк и будет «оснащен» полосй прокрутки. Значение, выбранное в списке по умолчанию, можно указать с помощью атрибута selected для соответствующего тега option. В приведенном примере месяц по умолчанию — Май

Атрибут value является необязательным. Если его не указать, то будет передана строка, заключенная в тег option. В нашем случае сценарию будет передан параметр month=Сентябрь (если value не указан).

Списки множественного выбора

С помощью тега SELECT можно создавать и списки множественного выбора. В таких списках можно выбрать не одно, а сразу несколько значений. Чтобы сделать список с множественным выбором, необходимо для тега SELECT указать атрибут multiple.

Если пользователь выберет несколько вариантов, то сценарию будут переданы параметры в форме:

имя-значение&имя=значекие...&имя=значеняе

О том, как обработать такие параметры с помощью PHP, вы узнаете ниже, в п. 2. Пример использования списка множественного выбора показан на рис. 6.

Рис. 6. Тег SELECT. Список с множественным выбором

6. Загрузка файлов

Тег INPUT позволяет реализовывать еще одну возможность в формах. Он позволяет создавать поле выбора файла для отправки. При этом формат тега таков:

<input type=file name=имя [value=имя файла] >

Более подробно о загрузке файлов мы поговорим в главе «Работа с WWW».

7. Передача параметров с помощью формы

В этой главе мы поговорим о передаче параметров с помощью форм данных. Создадим HTML-документ с формой, использующей все типы полей, описанные в п. 1. А затем напишем сценарий, который будет обрабатывать переданные параметры. Код HTML-документа приведен в листинге 2.

Листинг 2. Все типы полей в одном HTML-документе

<html>

<head>

<meta http-eqaiv="Content-Type" content="text/html; charset=koi8-r">

<title>Форма д а н ныx </titie>

</head>

<body>

<form action="http://localhost/form.php" method="POST"> Текстовое поле txt <input type="text" name="txt"xbr>

Поле ввода пароля pswd <input type="password" name="pswd"xbr> Скрытое поле hid <input type="hidden" name="hid" value="Hidden Fieid"xbr>

<hr>

<input type="checkbox" name="varl" value="Вариант 1" checked>BapnaHT 1 (по умолчанию)

<input type="checkbox" name="var2" уа1ие="Вариант 2">Вариант 2 <hr>

<input type="radio" name="sex" value="maie" checked>Мужчина <input type="radio" name="sex" value="female" >Женщина <hr>

<textarea name="t_area" cols="20" rows="5" wrap="virtual">

Текст по умолчанию </textarea>

<hr>

Список без возможности множественного выбора:<br>

<select name="month" size=l>

<option value=01 selected>Январь</option> <option value=02>Фeвpaль</option>

<option value=03>Mapт</option> <option value=04>Aпpeль</option> <option value=05 >Maй</option> <option value=06>Июнь</option> <option value=07>Июль</option> <option value=08>Aвгycт</option> <option value=09>Ceнтябрь</option> <option value=10>Oктябрь</option> <option value=ll>Hoябрь</option> <option value=12>Декабрь</option> </select>

<br>Список с возможностью множественного выбора:

<seiect name="month2[] " size=4 multiple> <select name=month size=l>

<option value=01 selected >Январь</option> <option value=02>Фeвpaль</option>

<option value=03>Mapт</option> <option value=04>Aпpeль</option> <option value=05 >Maй</option> <option value=06>Июнь</option> <option value=07>Июль</option> <option value=08>Aвгycт</option> <option value=09>Ceнтябрь</option> <option value=10>Oктябрь</option> <option value=ll>Hoябрь</option> <option value=12>Декабрь</option> </select>

<hr>

<input type="submit" name="go" value="Send"> <input type="reset" value="Clear form"> </form>

</body>

</html>

У Вас должна получится форма как показано на рис. 7.

Рис. 7. Форма в окне браузера

Когда пользователь нажмет кнопку go, браузер передаст сценарию следующие параметры:

1.txt — значение текстового поля;

2.pswd — значения поля ввода пароля;

3.hid — значение скрытого поля;

4.параметры varl и var2 будут переданы только, если соответствующие им переключатели активны (может быть передано одно из значений, оба значения или же ни одно из значений);

5.sex — значение группы зависимых переключателей (будет передано одно из значений — male или female);

6.t_area — содержимое текстовой области;

7.month — значение обыкновенного списка;

8.month [ ] — значение множественного списка.

Теперь нам нужно разобраться, как обработать все эти параметры Параметры txt, pswd, hid и t_area обрабатываются легко. Интерпретатор создает для каждого параметра переменную с соответствующим тименем. Например, для отображения значения параметра txt достаточно написать: echo "Stixr";

С параметрами varl и var,2 дело обстоит несколько сложнее. Если переключатель не активен, то параметры вообще не будут переданы На сервер, как будто бы вообще их и не было. Следовательно, не будет создана глобальная переменная и при попытке обращения к такой переменной мы получим сообщение о том, что переменная не существует. Поэтому просто написать echo Svarl; мы не можем: нужно предварительно проверить, существует ли переменная

if (isset(Svar1)) echo "var1: $var1"; if (isset(Svar2)) echo "var2: $var2";

Только после проверки существования можно начинать работу с переменной. Параметр sex, то есть наш зависимый переключатель, обрабатывается легко —

браузер передает только одно из значений. Другими словами, параметр sex будет равен или male, или female. Поэтому можно просто вывести значение этого параметра: echo $зех;

Точно также обрабатывается параметр $month — это обыкновенный список без возможности множественного выбора, поэтому по сути его можно представить, как набор из 12 зависимых переключателей.

Сложнее всего обработать список с множественным выбором. Ведь в этом случае параметры передаются так: name-valueliname=value2&name = value3...

При стандартном подходе переменная $паш.е будет содержать только последнее значение (valueN). Однако разработчики PHP позаботились об этом: множественный список можно представить в виде массива, а обработать его элементы можно с помощью цикла foreach. Нам даже не нужно знать количество переданных элементов списка. Предварительно лишь нужно сообщить PHP, что мы будем передавать массив: <select name="month2[] " size=4 multiple>

Квадратные скобки — это признак массива. Обрабатывается массив так:

foreach($month2 as $key=>$value) echo "5key = $value

";

Окончательный листинг сценария form.php представлен в листинге 3. Листинг 3. Сценарий form.php;

<?

/* Проверяем, нажал ли пользователь кнопку gо */ if (lisset ($go))

{

echo "Не указаны параметры\n" ; exit (1);

}

else

{

/* Начинаем обработку параметров */ echo "<html><body>";

echo "<b>Текстовые поля</b><br>";

echo "txt: $txt pswd: $pswd hid: $hid <br>"; echo "<b>Checkbox</b><br>";

if (isset ($varl)) echo "varl: $varl"; if (isset(Svar2)) echo "var2: $var2"; echo "<brxb>Radio</b><br>";

echo "sex: $sex";

echo "<br><Ь>Область ввода текста</b><br>" ; echo "$t_area";

echo "<br><Ь>Список month:</b> $month <br>"; echo "<br><Ь>Список month2:</b><br>"; foreach($month2 . as $key=>$value)

echo "$key = $value <br>";

}

?>

Предположим, что в текстовое поле txt мы ввели имя Denis, в поле пароля — my_password, выбрали только вариант 2, установили параметр sex в зничении male, заполнили текстовую область, в первом списке выбрали Январь, а во втором — первые три месяца.

Вывод сценария в особых комментариях не нуждается, кроме трансляции списков. Как вы видите, передается не строка (Январь), а заданное значение value (01). Если не указывать значение value, то значением параметра станет строка, заключенная в тег option. Также обратите внимание на трансляцию множественного списка: выводится номер элемента (О, 1, 2) и значения (01, 02, 03) элементов массива.

Соседние файлы в предмете Программирование для Web