На этом уроке мы с вами рассмотрим решение стандартной задачи - а именно создание формы с обязательными полями для заполнения. Если посетитель такой WEB-странички не заполнит обязательные поля и нажмет на кнопку submit, то он останется на той же странице, и для него будет выведена информация об незаполненных полях.
Сначала приведем код, которые затем обсудим:
<html>
<head>
<title>Форма с обязательным заполнением полей</title>
</head>
<?php
function show_form($l_name, $email) {
?>
<form action="form.php" method="post">
Ваше имя *<input type="text" name="l_name" value="<?php print $l_name ?>"><br>
E-mail*<input type="text" name="email" value="<?php print $email ?>"><br>
<input type="submit" name="submit" value="Отправить!"><input type="Reset">
</form>
<?
}
function check_form($l_name, $email) {
if(!$l_name || !$email):
print("Вы не заполнили нужные поля!<br>");
if(!$l_name) {
print("Введите Ваше имя.<br>");
}
if(!$email) {
print("Введите ваш e-mail.<br>");
}
show_form($l_name, $email);
else:
confirm_form($l_name, $email);
endif;
}
function confirm_form($l_name, $email) {
?>
<h2>Введенная Вами информация:</h2>
<?
print("<br>$l_name<br>$email\n");
}
if(!$submit):
?>
<p>Введите информацию о себе</p>
<p>Все поля обязательны для заполнения.<p>
<?php
show_form("", "");
else:
check_form($l_name, $email);
endif;
?>
</body>
</html>
Теперь начинаем обсуждение приведенного кода:
Как видно, у нас тут есть три функции - show_form, check_form и confirm_form. Они предназначены для показа, проверки и подтверждения правильности заполнения формы. Каждая из них принимает по два параметра - $l_name, $email, в которых сохраняются введенные посетителем страницы имя и e-mail. Рассмотрим эти функции более подробно.
Функция show_form:
...
function show_form($l_name, $email) {
?>
<form action="form.php" method="post">
Ваше имя *<input type="text" name="l_name" value="<?php print $l_name ?>"><br>
E-mail*<input type="text" name="email" value="<?php print $email ?>"><br>
<input type="submit" name="submit" value="Отправить!"><input type="Reset">
</form>
<?
}
...
Обратите внимание на то, что тело функции (выводимая форма) фактически находится вне тегов php-скрипта:
... ?> ... <? }
Этот прием можно использовать вместо того, чтобы писать внутри php-функции большое количество операторов echo или print. Просто мы выключаем форму из php-кода, но это не означает, что она не будет выводится при вызове функции show_form - как раз наоборот - форма выводится будет, причем поля формы будут заполнятся значениями переменных $l_name и $email, передаваемых в качестве параметров в функцию show_form. При первом вызове сценария эти переменные содержат пустые строки, так что посетитель увидет пустую страничку, если же посетитель заполнит какое-нибудь из этих полей, то соответствующая переменая примет некоторое значение, которое и выведется в поле формы.
Следующая функция - check_form. Она проверяет заполнение посетителем всех необходимых полей:
function check_form($l_name, $email) {
if(!$l_name || !$email):
print("Вы не заполнили нужные поля!<br>");
if(!$l_name) {
print("Введите Ваше имя.<br>");
}
if(!$email) {
print("Введите ваш e-mail.<br>");
}
show_form($l_name, $email);
else:
confirm_form($l_name, $email);
endif;
}
Сначала мы проверяем две переменных $l_name и !$email, связанные с соответствующими полями формы. Если какое-нибудь из них не заполнено, то мы пишем в окне браузера "Вы не заполнили нужные поля!", выводим информацию о незаполнении посетителем конкретных полей, после чего вызываем функцию show_form, которая опять выводит нашу форму, причем заполенные посетителем поля передаются в функцию show_form и уже оказываются заполненными. Если же посетитель заполнит все поля (т. е. условие !$l_name || !$email оказывается ложным), то мы вызываем функцию confirm_form, которую мы описываем в нашем коде дальше.
Функция confirm_form:
function confirm_form($l_name, $email) {
?>
<h2>Введенная Вами информация:</h2>
<?
print("<br>$l_name<br>$email\n");
}
Здесь мы просто выводим введенную посетителем информацию (т. е. значения $l_name и $email). Как и в случае с функцией show_form, часть кода, а именно строчку
<h2>Введенная Вами информация:</h2>
мы пишем вне тегов php-скрипта, чтобы не возится с операторами echo или print.
И, наконец, главная часть скрипта:
if(!$submit):
?>
<p>Введите информацию о себе</p>
<p>Все поля обязательны для заполнения.<p>
<?php
show_form("", "");
else:
check_form($l_name, $email);
endif;
?>
Обратите внимание, что она расположена вне всеx функций. Это означает, что она и будет сразу выполнятся на WEB-страничке (то же, что мы написали внутри функций, будет выполнятся только при вызове этих функций). Что мы тут делаем? Сначала мы проверяем значение переменной $submit. Если оно чему-то равно (это означает, что посетитель заполнил форму и нажал на кнопку submit), то мы вызываем функцию check_form, которая проверяет заполнение формы, если же посетитель на кнопку submit не нажимал, то вызывается функция show_form с пустыми параметрами, что эквивалентно показу незаполненной формы.