Версия для печати

Урок 2. Формы всего сущего.

Форма (эйдос, "морфэ") - специфический
принцип вещи, её сущность, цель и
движущая сила, актуализирующая первоматерию
как простую возможность бытия... 
Русская народная поговорка

На прошлом уроке мы научились передавать данные в php скрипт, что является удивительным явлением с точки зрения программирования: ввод данных происходит с помощью одного языка, обработка и вывод - посредством другого. 

Существует два самых распространенных метода передачи данных из формы в скрипт: GET и POST. Не вдаваясь в технические подробности, скажу лишь, что пользователь может различить их только по виду адресной строки. Например, если URL выглядит http://www.server.ru/registration.php?name=Vasia&surname=Pupkin, то мы можем сказать, что в данной форме использован метод GET. Этот метод предполагает присоединение к URL имён и значения форм. Причем делается это по следующей схеме:
http://какой-либо_URL/страница.php?имя_переменной=её_значение&имя=значение...
Метод POST, в отличие от GET, незаметен для пользователя и ничего не прибавляет к URL. На данный момент нам этих знаний вполне достаточно.

Перейдем теперь непосредственно к самим формам и рассмотрим различные способы ввода данных  в скрипт.

<Input type="TEXT"> <TextArea>
Два схожих элемента формы, предназначенные для ввода текста. В скрипт значения передаются следующим образом: значение атрибута name становится именем переменной, а введенные в элемент данные - её значением этой переменной.

<SELECT>

В HTML это записывается следующим образом:
<form ...><select name="variants">
<option value="1">Вариант1</option>
<option  value="2">Вариант 2</option>
<option  value="etc">и т.д.</option>
</select></form>

В скрипт передается переменная variants с одним из значений (1, 2 или etc) в зависимости от выбора пользователя. Если value не указаны, передается текст между тегами <option>.

<Input Type="CheckBox">

В случае установки флажка в обработчик передается переменная с именем, соответствующим имени самого checkbox, со значением On. Если checkbox пуст, то в скрипте эта перенная вообще не будет определена.

<Input type="Radio">


Самый распространенный способ использования этого элемента - выбор только одного из альтернативных вариантов. Для него соответствует следующий HTML код:

<form ...>
<Input type="radio" name="var" value="1">Вариант 1
<Input type="radio" name="var" value="variant_2">Вариант 2
</form>
Вариант 1
Вариант 2

В скрипт передастся переменная var со значением либо 1, либо variant_2.

<Input type="HIDDEN">

Невидимый элемент формы, но тем не менее несущий значение в скрипт. В php-программировании его часто используют для передачи данных через несколько страниц. Для этого на каждой странице необходимо расположить php-скрипт, считывающий значение элемента Hidden с предыдущей страницы и присваивающий это значение элементу Hidden текущей страницы. Типичный пример - двухстраничные формы, где все данные формы с первой страницы заносятся в Hidden-элементы формы со второй страницы. Кроме того, этот элемент используется при использовании одного и того же скрипта несколькими формами, что обеспечивает распознавание формы, из которой были переданы данные. Например, формы оценки статей на сайте.

<Input type="SUBMIT"> <Input type="Image" src="адрес">

Оба элемента выполняют одинаковую функцию - подачу запроса на обработку формы. Без одного из этих элементов функциональная форма просто не может существовать. Если с Submit, я думаю, все понятно, то Image имеет одну особенность: этот элемент может передавать скрипту два значения - координаты X и Y пикселя изображения, на который был совершен клик.

До следующего урока я рекомендую попрактиковаться в использовании всех элементов и выводом значений форм функцией ECHO. Кстати, для вывода всех значений форм вместе можно использовать предопределенные переменные $HTTP_GET_VARS или $HTTP_POST_VARS для соответствующих методов передачи данных. О предопределенных переменных мы поговорим попозже, а пока лишь скажу, что это зарезервированные переменные, которые сами берут значения из окружения сервера. Вышеуказанные переменные лучше выводить функцией PRINT_R, а не ECHO. Это должно выглядеть так:

<? print_r ($HTTP_POST_VARS); ?>

А в следующем уроке мы рассмотрим такой тип данных, как массив, а также познакомимся с управляющими конструкциями PHP.


Назад, на урок 1

Дальше, на урок 3 

 

Назад

Hosted by uCoz