Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Сайтостроение (уроки по HTML, PHP, MySQL, веб-дизайну)


Информационный Канал Subscribe.Ru

Сайтостроение. Основы PHP. Уроки с сайта http://progs.biz

Рассылка №19

Основы PHP. Урок 21. Форма с проверкой заполнения.

Полные версии уроков (с картинками) можно найти по адресам
Урок 21. Форма с проверкой заполнения.

PHP. Урок 21. Форма с проверкой заполнения

На этом уроке мы с вами рассмотрим решение стандартной задачи - а именно создание формы с обязательными полями для заполнения. Если посетитель такой 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 с пустыми параметрами, что эквивалентно показу незаполненной формы.

С этим уроком все!

Наверх

Другие рассылки с сайта progs.biz

Рассылки Subscribe.Ru
Уроки по Java

Уроки по Java с самого начала. Основные конструкции языка, классы в Java, создание приложений с графическим интерфейсом, создание апплетов, работа в JBuilder от Borland'а, сетевые приложения.


Copyright Алексеев Игорь, 2002

Copyright сайт progs.biz, 2002



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное