Практическая работа № 5. Обработка данных форм
Главное правило в связи HTML-формы и PHP-скрипта - это создание переменной для каждого элемента формы HTML. То есть, если в форме есть одно текстовое поле под названием Text, в PHP-сценарии уже не нужно создавать переменную для текстового поля и каким-то образом ее инициализировать, так как данная переменная $Text будет автоматически создана со значением, равным введенному значению в текстовое поле.
УПРАЖНЕНИЕ 5-1. Передача данных от формы к обработчику методом GET.
1. В папке WWW создайте файл f1.html, содержащий следующий код:
<HTML> <BODY><H1> Проверяем метод GET: </H1><FORM action="f1_get.php" method="get"> Ваше имя: <INPUT type="text" name="userName" maxlength="40"> <INPUT type="hidden" name="hideField" value="используется метод GET"> <INPUT type="submit" value="Проверить"></FORM></BODY> </HTML>2. Создайте файл с именем f1_get.php и впишите следующий код:
3. Проверьте, правильно ли работает скрипт, набрав в адресной строке браузера Фамилия.ru/f1.html. Обратите внимание на содержимое адресной строки при передаче запроса обработчику.
УПРАЖНЕНИЕ 5-2. Передача данных от формы к обработчику методом POST.
1. В папке WWW создайте файл с именем f2.html, содержащий следующий код:
<HTML> <BODY><H1> Проверяем метод POST: </H1><FORM action="f1_post.php" method="post"> Ваше имя: <INPUT type="text" name="userName_post" maxlength="40"> <INPUT type="hidden" name="hideField_post" value=" используется метод POST"> <INPUT type="submit" value="Проверить"></FORM></BODY> </HTML>2. Создайте файл с именем f2_post.php и впишите следующий код:
<?php echo ("Здравствуйте, " . $_POST["userName_post"]); echo ("<hr>"); echo ("Значение скрытого поля hideField_post равно " . $_POST["hideField_post"]); ?>3. Проверьте, правильно ли работает скрипт, набрав в адресной строке браузера Фамилия.ru/f2.html. Обратите внимание на содержимое адресной строки при передаче запроса обработчику.
УПРАЖНЕНИЕ 5-3. Работа с радиокнопками.
1. Создать HTML-документ, который будет содержать форму с двумя полями для ввода чисел и переключатель, который будет определять, какое действие надо выполнить с числами (сложить или перемножить).
<FORM method="post" action="f3_p.php"> а: <INPUT type="text" name="a" size="3"> + <INPUT type="radio" name="d" value="plus"> или * <INPUT type="radio" name="d" value="umnozh"> b: <INPUT type="text" name="b" size="3"> <P> <INPUT type="submit" value="Вычислить"></FORM>
2. Сохраните файл под именем f3.html и проверьте его работоспособность.
3. Создать php-файл f3_p.php, обрабатывающий данные из формы:
<? if ($_POST["d"]=="plus") { $c=$_POST["a"]+$_POST["b"]; echo ("сумма чисел = $c"); } else { $c=$_POST["a"]*$_POST["b"]; echo ("произведение чисел = $c"); } echo ("<BR> <A href='f3.html'> Вернуться назад </A>");?>4. Проверить работоспособность формы.
УПРАЖНЕНИЕ 5-4. Работа с «флажком».
1. В форму HTML-документа f3.html перед кнопкой добавить «флажок», позволяющий указать вид выводимого результата вычислений: вывести выражение полностью (например, 3+7=11) или показать только полученный результат.
<FORM method="post" action="f4_p.php"> а: <INPUT type="text" name="a" size="3"> + <INPUT type="radio" name="d" value="plus"> или * <INPUT type="radio" name="d" value="umnozh"> b: <INPUT type="text" name="b" size="3"> <P> <INPUT type="checkbox" name="f"> <P> <INPUT type="submit" value="Вычислить"></FORM>2. Сохраните файл под именем f4.html и проверьте его работоспособность.
3. Создать php-файл f4_p.php, обрабатывающий данные из формы:
<?if ($_POST["d"]=="plus") { $c=$_POST["a"]+$_POST["b"]; if ($_POST["f"].checked==checked) { echo ($_POST['a']."+".$_POST['b']."=".$c); } else { echo ("Результат = ".$c); } } else { $c=$_POST["a"]*$_POST["b"]; if (isset($_POST["f"])) { echo ("Результат = ".$c); } else { echo ($_POST['a']."*".$_POST['b']." = ".$c); } echo ("<BR> <A href='f4.html'> Вернуться назад </A>");?>4. Проверить работоспособность формы.
Пояснения:
· Если переключатели неактивны, то параметры вообще не будут переданы на сервер, как будто бы вообще их не было. Следовательно, не будет создана глобальная переменная и при попытке обращения к такой переменной, мы получим сообщение о том, что переменная не существует. Поэтому нужно предварительно проверить существует ли переменная с помощью функции isset ().
УПРАЖНЕНИЕ 5-5. Работа с выпадающим списком.
1. Создать новый HTML-документ, содержащий форму с двумя текстовыми полями для ввода фамилии и имени, список для выбора формы обращения («господин», «госпожа», «товарищ»), а также кнопку отправки данных обработчику.
<FORM method="post" action="f5_p.php"> <P> Фамилия: <INPUT type="text" name="f" size="15"> <P> Имя: <INPUT type="text" name="n" size="15"> <P> Форма обращения: <BR> <SELECT NAME="z" SIZE="1"> <OPTION VALUE="1" SELECTED> господин <OPTION VALUE="2"> госпожа <OPTION VALUE="3"> товарищ </SELECT> <P> <INPUT type="submit" value="Отправить"></FORM>2. Сохраните файл под именем f5.html и проверьте его работоспособность.
3. Создать php-файл f5_p.php по обработке данной страницы:
<?$s3=($_POST["f"]." ".$_POST["n"]); $s4=". Мы рады приветствовать вас на нашем сайте."; switch ($_POST["z"]) { // смотрим, чему равна переменная $z case 1: // 1 — это обращение «господин»… $s1="Уважаемый "; $s2="господин "; break; case 2: // 2 — это обращение «госпожа»… $s1="Уважаемая "; $s2="госпожа "; break; case 3: // 3 — это обращение «товарищ»… $s1="Уважаемый "; $s2="товарищ "; break; } echo ($s1 . $s2 . $s3 . $s4);?>УПРАЖНЕНИЕ 5-6.
1. Добавить в HTML-документ f5.html многострочную область для ввода дополнительной информации о пользователе:
2. Сохранить документ под именем f6.html и проверить его работоспособность.
3. В php-файл f5_p.php добавить код для вывода содержимого текстовой области. Сохранить результат под именем f6_p.php и проверить работу обработчика.
Форму и PHP-скрипт можно располагать в одном документе. Для этого для параметра action в теге FORM надо указать: action="<?php print $PHP_SELF ?>"
Однако если просто прописать то, что показано выше, при первом вызове документ будет выдавать ошибку. Чтобы этого не было, надо проверить, определена ли переменная, связанная с вызовом обработчика, используя функцию isset ($имя_переменной).
Пример:
<?php
if (isset($im)) { print $hello; }
?>
. . .
<form action="<?php print $PHP_SELF ?>" method="POST">
<input type="text" name="hello">
<input type="submit" name="im" value="Готово">
</form>
УПРАЖНЕНИЕ 5-7. «Угадай-ка» - скрипт и форма в одном документе
1. В папке WWW создайте новый текстовый файл со следующим кодом:
<HTML><HEAD> <TITLE> Угадай число </TITLE> </HEAD> <BODY><FORM method="post" action="<?php print $PHP_SELF ?>"> Введите число от 1 до 10: <INPUT type="text" name="a" size="3"> <INPUT type="hidden" name="h" value="5">// угадываемое число<P> <INPUT type="submit" name="obr" value="Проверить"></FORM><?if (isset($_POST["obr"])) { if ($_POST["a"]==$_POST["h"]) { echo($_POST["a"]." - УГАДАЛИ!"); } else { if ($_POST["a"]>$_POST["h"]) { echo($_POST["a"]." - МНОГО..."); } else { echo($_POST["a"]." - МАЛО..."); } } }?> </BODY> </HTML>2. Сохранить документ под именем f7.php и проверить его работоспособность.