Формы служат для обмена данными между клиентом и веб-сервером по
протоколу CGI. Другими словами говоря, вы заполняете форму нажимаете
кнопку, и ваши данные уходят на сервер в виде:
[имя_переменной]=[значение_переменной]. CGI - программа на
сервере обрабатывает эти данные и выполняет в зависимости от
результата какие-либо действия. Это может быть обработка сообщения
конференции, подписка на новости сайта, работа с базой данных
посетителей сайта и т.д.
Возникает вопрос, а обязательно ли знать CGI-программирование для
того, чтобы применять формы? Отвечу, что CGI знать желательно, но не
обязательно. В конце этой статьи я продемонстрирую как без написания
обработчика на сервере, заставить форму выполнять некоторые
действия.
Задание формы.
Форма задается тэгами <form></form> и состоит из управляющих
элементов (текстовое поле, кнопка, список и т.д.).
Атрибуты тэга
<FORM>:
action="URL"
URL-адрес CGI-программы, выполняющей обработку
данных.
method
Способ передачи данных веб-серверу. Может принимать
значения:
get -программа CGI, указанная в параметре ACTION,
получит данные из формы через переменную среды с именем
QUERY_STRING;
post -программа CGI получит данные из формы через
стандартный поток ввода;
enctype
Тип передаваемых данных данных. Значение по умолчанию -
application/x-www-form-urlencoded.
Создание списка.
Список создается тэгом <select></select>
Атрибуты тэга
<SELECT>:
name
имя списка, которое передается веб-серверу в паре с
выбранной строкой
size
высота списка в строках. По умолчанию список
раскрывающийся т.е. видна только одна
строка.
Для записи строк в список используется тэг <OPTION>. Строка, отмеченная
параметром selected, будет выбрана в списке по умолчанию.
Графическое изображение вместо кнопки: <input name="ImgBtn" type="image" src="url"
border="0">
При нажатии мышью на такую кнопку CGI программе будут переданы
две переменные : name.x (где name - имя кнопки, а x - x- координата
точки нажатия в пикселях), и name.y. Начало координат - левый
верхний угол рисунка. Все значения атрибута VALUE игнорируются.
Картинка задается тэгом < SRC> и по синтаксису совпадает с
тэгом <IMG>.
Передача файлов: Внимание!
Поскольку данная возможность требует поддержки получения файлов
WEB-сервером, то, соответственно, необходимо, чтобы сервер
поддерживал получение файлов! Например:
Создание работающих форм без написания CGI-обработчика.
HTML имеет механизм пересылки содержимого формы по электронной
почте. Для этого в тэге <FORM>, укажем следующие значения
атрибутов: method="post",
action="mailto:adress@domain.ru?subject=Message",
enctype="text/plain". В этом случае произойдет передача данных
формы по электронному адресу "adress@domain.ru" в незакодированном
"text/plain" виде. Заметьте, что параметром ?subject можно указать
почтовой программе тему (Subject) сообщения
Пример работающей формы:
Следующая форма отправит содержимое формы на мой eMail: Чтобы
не захламлять форму, я не стал указывать в тексте тэги таблицы
оставив лишь тэги, относящиеся к форме.
<form name="sendtome" method="post"
action="mailto:valery@ropnet.ru?subject=Message"
enctype="text/plain"> Ваш возраст <input
style="width:100px;border:2px solid red;"name="old"
type="text"> Откуда Вы узнали про этот сайт <select
name="Where_You_Find_This_Site" cols="30"> <option>из
поисковой системы <option>нашел по
ссылкам <option>случайно </select> Следует ли
дальше продолжать уроки HTML? да <input
name="To_Continue_Lessons" type="radio" value="yes"
checked> нет <input name="question" type="radio"
value="no"> не знаю <input name="question" type="radio"
value="hz"> Какие разделы Вы хотели бы видеть
еще? JavaScript <input name="js" type="checkbox"
value="yes"> MySQL <input name="MySQL" type="checkbox"
value="yes"> Perl <input name="perl" type="checkbox"
value="yes"> VBScript <input name="vbs"
type="checkbox"> DHTML <input name="dhtml"
type="checkbox" value="yes"> Никакие <input name="no"
type="checkbox" value="yes">
Письмо придет приблизительно такого
содержания: old=33 Where_You_Find_This_Site=из поисковой
системы To_Continue_Lessons=yes js=yes
Еще один способ заставить форму работать - применить к ней
обработку событий JavaScript. При нажатии на кнопку в ней возникает
событие "OnClick", которое можно обработать написав
функцию-обработчик. Например, создадим простейшую форму,
складывающую два числа по нажатию кнопки. Создадим форму для
ввода чисел: <FORM
name="calc"> <input name="val1" type="text" value="0"
size="4">+ <input name="val2" type="text" value="0"
size="4"> <input type="button"
value=" + " onclick="adding(val1,
val2)"> <input name="is" type="text"
value="0"> </FORM>
И напишем функцию, получающую аргументы из полей val1 и val2 и
выводящую результат в поле is: <script language="JavaScript"> function
adding(val1,
val2) { document.calc.is.value=eval(parseFloat(document.calc.val1.value)+parseFloat(document.calc.val2.value)); } </script>
Теперь попробуйте сложить два числа используя эту форму.