ГРУППА КУРСА
|
Главная >
Учебник PHP >
Работа с формами в PHPВ одной из прошлых тем уже рассматривалось получение данных из формы. В данной теме я подробнее расскажу, как правильно отправлять форму на сервер, и обрабатывать её в PHP. Отправка формыПоле для ввода. Самые распространённые элементы формы - различные поля для ввода. Они создаются при помощи тэга <input> многих типов и тэга <textarea>. С отправкой данных из этих элементов всё просто. Тэги имеют атрибут name, который определяют имя параметра. А значение параметра - это текст, который напишет пользователь в поле для ввода. У тэгов может быть атрибут value, который задаёт значение по умолчанию. Это значение будет отправлено на сервер, если пользователь ничего не введёт. Для примера создадим форму и добавим в неё поля для ввода:
select. Из тэга <select> данные отправляются так: Атрибут name есть у самого этого тэга. А атрибут value есть у пунктов списка, то есть у тэгов <option>. Обычно у каждого пункта своё значение атрибута value. Какой пункт выберет пользователь, из такого пункта берётся значение параметра. Текст в тэге <option> не важен, используется только атрибут. Добавим в форму тэг <select>:
Радиокнопка. У всех радиокнопок из одной группы атрибут name должен иметь одинаковое значение. Это значение объединяет радиокнопки в группу, из которой можно выбрать только одну радиокнопку. Атрибут value устанавливается разный. На сервер отправляется только один параметр при любом количестве радиокнопок в группе. Имя параметра берётся из атрибута name. А значение параметра из атрибута value выбранной радиокнопки. Добавим радиокнопки в форму:
Чекбокс. В отличие от радиокнопок, каждый чекбокс - это самостоятельный элемент формы. Все чекбоксы независимы друг от друга и каждый отправляет свои данные на сервер. Атрибут name у всех чекбоксов должен быть разный, а атрибут value может быть любой. У чекбокса нет каких-то конкретных данных. Он либо выбран либо нет. Поэтому устанавливать ему длинное значение нет смысла. Ему можно задать значение в один символ, например, 1. На сервере смысл этого значения будет такой: если значение есть, то чекбокс был выбран, а если никакого значения нет, значит он не выбран. В зависимости от этого PHP скрипт будет производить разные действия. Добавим чекбоксы в форму и создадим кнопку оправки формы:
Обработка данных из формВ предложенном примере создана форма, отправляющая данные скрипту takeform.php. Cоздадим этот скрипт. Это будет не просто программа, а страница. Она будет формироваться в зависимости от данных, получаемых из формы. Форму отправляем методом POST. Скрипт берёт данные из суперглобального массива $_POST. Создадим файл takeform.php и запишем в переменные значения из первых двух элементов формы: takeform.php:
Тег <input> с именем login содержит атрибут value со значением user. Если пользователь ничего не введёт в это поле, то на сервер будет отправлено именно это значение. Выведем на страницу логин, полученный из формы:
В тег <textarea> мы не добавили атрибут value. Если ничего не ввести в него то значение будет пустое. Часто бывает нужно проверить, написал ли пользователь что-нибудь в поле для ввода. Для этого есть функция empty(), которая возвращает true, если переменная содержит пустое значение, а иначе возвращает false. На странице, принимающей данные из формы, сделаем проверку, было ли введено что-то в <textarea>. Значение из него мы записали в переменную $self, её и проверим.
Если переменная $self содержит значение, то на странице выводится текст из переменной. Если переменная пустая, то блок создаваться не будет. select. Текст из полей для ввода обычно используется сам по себе. Он записывается в базу данных или выводится на страницу. Но данные из других элементов формы используются по-другому. Получив данные из формы, скрипт не выводит их, а определяет на их основе, какие действия нужно выполнять. Сформируем часть страницы в зависимости от выбора пользователем пункта списка:
Радиокнопка. У всех радиокнопок одной группы одинаковый атрибут value. Соотвотсвоенно, для всей группы создаётся один элемент массива $_POST. В него будет записано значение из той радиокнопки, которую выберет пользователь. Добавим на страницу результат выбора радиокнопки:
Чекбокс. Каждый чекбокс обрабатывается отдельно. Обычно чекбокс не содержит конкретных данных, поэтому просто проверяется содержит он значение или нет. Если значение есть, значит пользователь его выбрал, и это учитывается в скрипте. Добавим на страницу информацию о том, что выбрал пользователь:
Так данные из форм отправляются на сервер и обрабатывабтся в PHP скриптах. В зависимости от разных задач, работа с формами может осуществляться по-разному, но на основе приведённых примеров Вы сможете легко использовать данные из форм так, как Вам нужно. |