В одной из прошлых тем уже рассматривалось получение данных из формы. В данной теме я подробнее расскажу, как правильно осуществляется отправка формы на сервер, а также обработка формы в PHP.
Отправка формыПоле для ввода. Самыми распространёнными элементами формы являются различные поля для ввода. Они создаются при помощи тэга многих типов и тэга . С отправкой данных из этих элементов всё просто. Тэги имеют атрибут name , которые определяют имя параметра. А значение параметра - это текст, который напишет пользователь в поле для ввода. Кроме того, у тэгов может быть атрибут value , который задаёт значение по умолчанию. Это значение будет отправлено на сервер, если пользователь ничего не введёт. Для примера создадим форму и добавим в неё поля для ввода:
1 | Страница |
select. Из тэга данные отправляются так: Атрибут name есть у самого этого тэга. А атрибут value есть не у тэга , а у пунктов списка, то есть у тэгов . Обычно у каждого пункта своё значение атрибута value . Какой пункт выберет пользователь, из такого пункта берётся значение параметра. При этом, текст в тэге не имеет значения, используется только атрибут. Добавим в форму тэг :
12 |
Интересы Занятия спортом Природа Кино Литература |
Радиокнопка. У всех радиокнопок из одной группы атрибут name должен иметь одинаковое значение. Это значение не только устанавливает имя параметра, но и объединяет радиокнопки в группу, из которой можно выбрать только одну радиокнопку. Атрибут value устанавливается разный. Добавим радиокнопки в форму:
Чекбокс. В отличие от радиокнопок, каждый чекбокс - это отдельный элемент формы. Все чекбоксы независимы друг от друга и каждый отправляет свои данные на сервер. Атрибут name у всех чекбоксов должен быть разный, а атрибут value может быть либо одинаковый, либо разный. Однако у чекбокса нет каких-то конкретных данных. Он может быть либо выбран либо нет. Поэтому устанавливать ему длинное значение нет смысла. Ему можно задать значение в один символ, например, 1. На сервере смысл этого значения будет такой: если значение есть, то чекбокс был выбран, а если никакого значения нет, значит он не выбран. Добавим чекбоксы в форму и создадим кнопку оправки формы:
Обработка данных из формВ предложенном примере создана форма отправляющая данные скрипту с названием takeform.php. Поэтому нужно создать этот скрипт. Это будет не просто программа, а страница, которая будет формироваться в зависимости от данных, получаемых из формы. Форму отправляем методом POST. Скрипт берёт эти данные из суперглобального массива $_POST . Элементы массива можно просто использовать в скрипте, но если с ними нужно много работать, то писать каждый раз название элемента неудобно. Проще записать значение в переменную и обращаться к ней. Создадим файл takeform.php и запишем в переменные значения из первых двух элементов формы:
takeform.php:
В тег мы не добавили атрибут value . Если ничего не ввести в него то значение будет пустое. Часто бывает нужно проверить, написал ли пользователь что-нибудь в поле для ввода. Для этого есть функция empty() , которая возвращает true , если переменная содержит пустое значение, а иначе возвращает false . На странице, принимающей данные из формы, сделаем проверку, было ли введено что-то в . Значение из него мы записали в переменную $self , её и проверим. Если она содержит значение, то добавим на страницу блок и разместим в нём текст из переменной. Если переменная пустая, то блок создаваться не будет.
13 |
if (!empty($self))
{
echo " О себе: "; echo "".$self.""; } |
select. Текст из полей для ввода обычно используется сам по себе. Он записывается в базу данных или выводится на страницу. Но данные из других элементов формы используются несколько по-другому. Получив данные из формы, скрипт не выводит их, а определяет на их основе, какие действия нужно выполнять. Сформируем часть страницы в зависимости от выбора пользователем пункта списка:
Обратите внимание, открывающий тэг
Идёт до обработки данных, в строке 19, а закрывающий - в конце, в строке 28. Таким образом, на части разделён не только HTML код, но и конкретный тэг. Это обычная практика.
Радиокнопка. У всех радиокнопок одной группы одинаковый атрибут value . Соотвотсвоенно, для всей группы создаётся один элемент массива $_POST . В него будет записано значение из той радиокнопки, которую выберет пользователь. Добавим на страницу результат выбора радиокнопки:
Чекбокс. Каждый чекбокс обрабатывается отдельно. Обычно чекбокс не содержит конкретных данных, поэтому просто проверяется содержит он значение или нет. Если значение есть, значит пользователь его выбрал и это учитывается при обработке данных формы. Добавим на страницу информацию о том, что выбрал пользователь:
Так данные из форм отправляются на сервер и обрабатывабтся в PHP скриптах. В зависимости от разных задач, работа с формами осуществляться иначе, но на основе приведённых примеров Вы сможете легко использовать данные из форм так, как Вам нужно.
В этом уроке PHP рассматриваются базовые понятия языка: обработка форм с отправкой запроса в веб-страницы, основные управляющие конструкции php при обработке форм, запись данных из формы PHP в файл, функция даты в PHP date().
1. Напомним, что все файлы php тестируются только при запущенном Денвере и только из адресной строки браузера. Запускать файлы php двойным щелчком нельзя!
2. Запустите Денвер.
Упражнение 1. Обработка простой формыВ данном уроке PHP рассмотрим обработку формы на HTML-странице, создание переменных PHP для полей формы.
1. Создайте форму, как на рис. 3.1. Подразумевается, что при нажатии на кнопку Отправить заказ данные из формы будут переданы администратору, а клиент на экране увидит ответ Заказ обработан . Если Вы затрудняетесь в написании формы, тогда реализуйте код, приведенный ниже рисунка, и сохраните его в папке php_2 под именем forma_bob.html Напоминаем, что адрес обработчика формы записывается в атрибуте action тега form .
Рисунок 3.1
2. Для того, чтобы пользователь получил ответ после отправки данных, необходимо создать обработчик формы на языке php. Создайте код, приведенный ниже, и сохраните его в папке php_2 под именем zakaz.php
3. Проверьте работоспособность обработчика. Для этого запустите файл forma_bob.html через браузер, набрав в адресной строке браузера адрес http://localhost/php_2/forma_bob.html
4. В поля формы введите любые цифры и нажмите кнопку Отправить заказ . Результат на рис. 3.2.
Рисунок 3.2
Переменные формыВесь смысл использования формы заказа заключается в получении информации о заказе клиента, которую он ввел с клавиатуры. Внутри PHP-сценария к каждому из полей формы можно получить доступ как к переменной, имеющей то же имя, что и у поля формы. В языке PHP переменные легко распознать, так как они начинаются со знака доллара $ .
Вы можете получить доступ к содержимому поля tireqty следующими способами:
$tireqty //короткий стиль
$_POST[‘tireqty’] //средний стиль
$HTTP_POST_VARS[‘tireqty’] //длинный стиль
Мы будем использовать длинный стиль для ссылок на переменные формы, но для простоты использования строить короткие версии применения. Это удобный и безопасный способ манипулирования данными, который эффективно работает во всех системах, независимо от выбранных версий и настроек.
Копируя содержимое одной переменной в другую, мы применяем операцию присваивания, для обозначения которой в языке PHP используется знак равенства (= ). Приводимая ниже строка кода создает новую переменную с именем $tireqty и переносит содержимое $_POST[‘tireqty’] в эту новую переменную:
$tireqty=$_POST[‘tireqty’]
Так как этот сценарий не генерирует никаких выходных данных, нет никакой разницы, будет он помещен выше или ниже дескриптора . Обычно этот блок размещается в начале сценария.
5. В файле zakaz.php измените код следующим образом и проверьте работоспособность формы. Результат на рис. 3.3. Цифры могут отличаться в зависимости от того, какие данные Вы ввели.
Рисунок 3.3
Упражнение 2. Создание калькулятора для формы «Автозапчасти от Боба»В этом уроке PHP рассмотрим основные арифметические функции PHP для расчетов.
1. Файл forma_bob.html сохраните под именем forma_bob_2.html
2. Файл zakaz.php сохраните под именем zakaz_2.php
3. В файле forma_bob_2.html форму «Автозапчасти от Боба» измените так, чтобы она имела вид, как на рис. 3.4. Не забудьте изменить имя обработчика на zakaz_2.php . Если затрудняетесь, то можете реализовать код, приведенный ниже.
Рисунок 3.4
4. Создайте новую обработку для формы в файле zakaz_2.php , используя знания, полученные из предыдущих уроков. Обработка должна содержать следующие выходные данные и условия:
1. Стоимость каждого товара определяется константой. Константа на PHP задается функцией define. Пример define("POKRPRICE",10); Первый параметр функции - это имя константы, которое пишется прописными буквами, второй параметр - значение константы.
2. Логическая операция ИЛИ обозначается ||
3. Логическая операция И обозначается && .
4. Операции сравнения: больше >
, меньше <
, больше или равно >=
, меньше или равно