Уроки PHP — Работа с формами
В данной статье я хочу показать некоторые возможности php. И я надеюсь, что вы, мой читатель, уже знакомы с html и сss, а если не знакомы, то вы на этом же сайте можете познакомиться с ними.
Итак, создаем форму. В файл lesson1.php вводим следующее:
<html> <HEAD> <META http-equiv=content-type content=»text/html; charset=windows-1251″> <style> .t2{ FONT-SIZE: 14px; color: black; FONT-FAMILY: Verdana, Helvetica, Arial; display:block; text-align: right;} .t{ FONT-SIZE: 14px; color: red; FONT-FAMILY: Verdana, Helvetica, Arial; } </style> </HEAD> <body > <br><br><br><br><br> <form action=»lesson1.php» method=»post» name=»frt» > <table align=»center»> <tr><td>введите имя</td> <td> <input type=»text» size=»15″ maxlength=»15″ name=»name1″ value=»<?php echo $_POST[«name1″] ?>»></td></tr> <td> <input type=»text» size=»15″ maxlength=»15″ name=»name2″ value=»<?php echo $_POST[«name2″]?>»></td></tr> <tr><td>введите ваш вопрос президенту</td> <td><textarea name=»text1″ rows=7 cols=40 wrap=»hard»><?php echo $_POST[«text1»] ?></textarea></td></tr> <tr><td colspan=»2″><input type=»hidden» name=»confirm» value=»12345″></td></tr> <tr><td colspan=»2″ align=»center»><input type=»submit»; name=»vvod»; value=»ввести»; ></td></tr> </table> </body> </html> |
Для обработки данных, вводимых этой формой мы будем использовать этот же файл. Для передачи данных используем метод post. Если вы не знакомы с языком php, то тогда вы уже увидели незнакомые для себя строчки. Язык php тем хорош, что его операторы могут быть встроены в любом месте странички. Для встраивания операторов php используется тег <?php …..?>
Оператор echo используется для того, чтобы вставить в текст странички значение некоторой переменной. Переменная $_POST[«name1»]-это переменная php-интерпретатора и после нажатия кнопки «ввести» содержит данные, введенные в поле под названием name1-атрибут name тега input. Таким образом, строка value=»<?php echo $_POST[«name2»]?> означает, что при загрузке формы после нажатия на кнопку «ввести» данные, введенные пользователем, не будут потеряны, а будут снова отображены в этом поле.
И в результате мы имеем следующее:
далее на надо написать код, который буде проверять введенные данные. Изменяем текст нашего файла:
<body > <?php if($_POST[«confirm»]) { $error=»ошибка:»; $name1=$_POST[«name1»]; $name2=$_POST[«name2»]; $text1=$_POST[«text1»]; if(strlen($name1)==0) {$error.=»вы не ввели ваше имя<br>»; } if(strlen($name2)==0) {$error.=»вы не ввели вашу фамилию<br>»; } if(strlen($text1)==0) {$error.=»вы не ввели вопрос президенту»; } if($error!=»ошибка:») {print «$error «; } } ?> <td><textarea name=»text1″ rows=7 cols=40 wrap=»hard»><?php echo $_POST[«text1»] ?></textarea></td></tr> <tr><td colspan=»2″><input type=»hidden» name=»confirm» value=»12345″></td></tr> <tr><td colspan=»2″ align=»center»><input type=»hidden» name=»confirm» value=»12345″; ></td></tr> </table> </body> </html> |
Я в форму ввел скрытое поле с заданным начальным значением. Я это сделал для того, чтобы проверять, была ли нажата кнопка «ввести» или нет. Оператор этой проверки: if($_POST[«confirm»]). Функция strlen-определяет длину строки. И в программе я проверяю длину строки на 0, т.е. ввел ли пользователь хоть какие-нибудь данные или нет, и если нет, то я вывожу строчки с ошибками. Это делает функция print и она аналогична функции echo. Код там легкий и я думаю вы сами все поймете. В результате получаем:
и последний этап. Добавляем небольшой код и в результате текст файла:
<html> <HEAD> <META http-equiv=content-type content=»text/html; charset=windows-1251″> <style> .t2{ FONT-SIZE: 14px; color: black; FONT-FAMILY: Verdana, Helvetica, Arial; display:block; text-align: right;} .t{ FONT-SIZE: 14px; color: red; FONT-FAMILY: Verdana, Helvetica, Arial; } </style> </HEAD> <body > <br><br> <?php if($_POST[«confirm»]) { $error=»ошибка:»; $name1=$_POST[«name1»]; $name2=$_POST[«name2»]; $text1=$_POST[«text1»]; if(strlen($name1)==0) {$error.=»вы не ввели ваше имя<br>»; } if(strlen($name2)==0) {$error.=»вы не ввели вашу фамилию<br>»; } if(strlen($text1)==0) {$error.=»вы не ввели вопрос президенту»; } if($error!=»ошибка:») {print «<center class=\»t\»>$error</center> «; } } ?> <?php if($_POST[«confirm»] && $error==»ошибка:») {print «<br><br><table align=\»center\»><td> $name1 $name2 задал вопрос президенту:</td>»; print «<td>$text1</td></table>»; } ?> |
Мы добавили код,
if($_POST[«confirm»] && $error==»ошибка:») {print «<br><br><table align=\»center\»><td> $name1 $name2 задал вопрос президенту:</td>»; print «<td>$text1</td></table>»; } |
который выводит следующую строчку: Вася Пупкин задал вопрос президенту: …..
В результате имеем:
Вот и сказочке конец, а кто слушал-молодец.
(Ю. Гришин)
К списку всех уроков PHP
Работа с полями ввода форм в PHP
Работа с полями ввода форм
Последнее обновление: 1.11.2015
Формы могут содержать различные элементы — текстовые поля, флажки, переключатели и т.д., обработка которых имеет свои особенности.
Обработка флажков
Флажки или чекбоксы checkbox
могут находиться в двух состояниях: отмеченном (checked) и неотмеченном. Например:
Запомнить: <input type="checkbox" name="remember" checked="checked" />
Если флажок находится в неотмеченном состоянии, например:
Запомнить: <input type="checkbox" name="remember" />
то при отправке формы значение данного флажка не передается на сервер.
Если флажок отмечен, то при отправке на сервер для поля remember
будет передано значение on
:
$remember = $_GET['remember'];
Если нас не устраивает значение on
, то с помощью атрибута value
Запомнить: <input type="checkbox" name="remember" value="1" />
Иногда необходимо создать набор чекбоксов, где можно выбрать несколько значений. Например:
ASP.NET: <input type="checkbox" name="technologies[]" value="ASP.NET" /> PHP: <input type="checkbox" name="technologies[]" value="PHP" /> RUBY: <input type="checkbox" name="technologies[]" value="Ruby" />
В этом случае значение атрибута name должно иметь квадратные скобки. И тогда после отправки сервер будет получать массив отмеченных значений:
$technologies = $_POST['technologies']; foreach($technologies as $item) echo "$item<br />";
В данном случае переменная $technologies
будет представлять массив, который можно перебрать и выполнять все другие операции с массивами.
Переключатели
Переключатели или радиокнопки позволяют сделать выбор между несколькими взаимоисключающими вариантами:
<input type="radio" name="course" value="ASP.NET" />ASP.NET <br> <input type="radio" name="course" value="PHP" />PHP <br> <input type="radio" name="course" value="Ruby" />RUBY <br>
На сервер передается значение атрибута value
у выбранного переключателя. Получение переданного значения:
if(isset($_POST['course'])) { $course = $_POST['course']; echo $course; }
Список
Список представляет элемент select
, который предоставляет выбор одного или нескольких элементов:
<select name="course" size="1"> <option value="ASP.NET">ASP.NET</option> <option value="PHP">PHP</option> <option value="Ruby">RUBY</option> <option value="Python">Python</option> </select>
Элемент <select>
<option>
:Теперь получим выбранный элемент:
if(isset($_POST['course'])) { $course = $_POST['course']; echo $course; }
Но элемент select также позволяет множественный выбор. И в этом случае обработка выбранных значений изменяется, так как сервер получает массив значений:
<select name="courses[]" size="4" multiple="multiple"> <option value="ASP.NET">ASP.NET</option> <option value="PHP">PHP</option> <option value="Ruby">RUBY</option> <option value="Python">Python</option> </select>
Такие списки имеют атрибут multiple="multiple"
. Для передачи массива также указываются в атрибуте name
квадратные скобки:
name="courses[]"
Теперь получим в PHP выбранные значения:
<?php if(isset($_POST['courses'])) { $courses = $_POST['courses']; foreach($courses as $item) echo "$item<br>"; } ?>
Получаем данные от элементов формы с помощью PHP
В этом уроки мы с помощью функций PHP получим данные, которые будет вводить пользователь в форму.
Первое, что нам нужно — это создать форму:
<form action="app/check.php" method="post">
<p>Имя: <input name="name" type="text"></p>
<p>Фамилия: <input name="surname" type="text"></p>
<p>E-mail: <input name="email" type="text"></p>
<p>Сообщение: <br /><textarea name="message" cols="30" rows="5"></textarea></p>
<p><input type='submit' value='Отправить'></p>
</form>
Обратите внимание на строку action=»app/check.php» — это адрес обработчика формы, сюда будут отправляться данные формы, после нажатия кнопки Отправить. Также, на параметр name у полей формы, мы будем использовать эти имена при написании кода. Передавать данные будем методом — POST.
1. Давайте начнем. Создайте и откройте (через редактор) обработчик app/code.php — сначала, это просто пустая страница. Далее откройте тег PHP — <?php.
2. Нам нужно проверить, была ли отправлена форма, для этого мы будем использовать глобальную переменную $_SERVER
и проверять REQUEST_METHOD
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
// наш код
}
?>
3. Дальше, если форма отправлена, мы можем получить данные от поля «Имя», для этого, какой-нибуть переменной присваиваем полученное значение от этого поля, например:
<?php
$name = $_POST['name'];
?>
$_POST
— переменная, в которой сохраняются данные, если форма была отправлена методом POST.
$_POST['name']
— получаем данные от поля name.
4. Тоже самое делаем и для остальных наших полей:
<?php
$name = $_POST['name'];
$surname = $_POST['surname'];
$email = $_POST['email'];
$message = $_POST['message'];
?>
5. Данные мы получили, теперь мы можем их вывести, для этого в страницу обработчика дописываем код:
<?php
$name = $_POST['name'];
$surname = $_POST['surname'];
$email = $_POST['email'];
$message = $_POST['message'];
echo $name."<br />".$surname."<br />".$email."<br />".$message."<br />";
?>
Не рекомендуется просто так, без проверки, выводить введенные пользователем данные.
Пропускайте переменные хотя бы через функцию htmlspecialchars.
Вот так, можно получать данные введенные в элементы формы.
Посмотреть исходники
Самоучитель (учебник) по PHP онлайн
Главная Страница » Самоучитель PHP 5 для чайников с примерами » Работа с HTML-формами
Мы уже говорили, что РНР позволяет работать со многими структурами будь то электронная почта, файлы, базы данных и т.д. Однако рассмотрение этих и других возможностей РНР мы начнем с более простого примера — HTML-формы. Наверное, многие из вас встречали HTML-формы, посещая Web-сайты сети Internet. Это может быть заполнение анкет с данными о пользователе, интерфейс гостевой книги и др. В данной главе мы рассмотрим схему передачи данных из HTML-формы в PHP-сценарий, структуры хранения этих данных, а также несколько полезных примеров использования HTML-форм.
Что такое HTML-форма?
HTML-форма — это средство языка HTML для ввода и передачи данных. Хотя они напрямую не относятся к РНР, для лучшего понимания материала этой главы рассмотрим основные принципы синтаксиса их создания. Любая форма начинается с тега ‹form› и заканчивается ‹/form›. Внутри открывающего тега могут указываться атрибуты, которые определяют параметры HTML-формы. Каждый из них имеет название и определенное значение. Нас будут интересовать атрибуты action и method. Внутри HTML-формы (между тегами ‹form› и ‹/form›) обычно помещают поля для ввода текста с клавиатуры, списки, кнопки и т.д. Их подробное описание можно найти в любой литературе, посвященной языку HTML.
Вернемся к рассмотрению тега ‹form›. Атрибут этого тега action указывает на файл, в котором будут обрабатываться данные из HTML-формы (листинг 10.1).
Листинг 10.1. HTML-форма.
‹html›
‹head›
‹title› HTML-форма ‹/title›
‹/head›
‹body›
‹form action="test.php"›
‹input type="Text" name="text"›
‹input type="Submit" value="Go!"›
‹/form›
‹/body›
‹/html›
В этом примере создается HTML-форма, которая содержит поле для ввода текста и кнопку для отправки данных. Если пользователь нажмет на кнопку из этой HTML-формы, то запустится файл с названием test.php, куда определенным способом передадутся данные из HTML-формы. Обратите внимание, что файл test.php и файл, содержащий HTML-форму, должны находиться в одной папке.