Уроки 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> <tr><td>введите фамилию</td> <td> <input type="text" size="15" maxlength="15" name="name2" value="<?php echo $_POST["name2"]?>"></td></tr> <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"]
И в результате мы имеем следующее:
далее на надо написать код, который буде проверять введенные данные. Изменяем текст нашего файла:
<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 "$error "; } } ?> <tr><td>введите имя</td> <td> <input type="text" size="15" maxlength="15" name="name1" value="<?php echo $_POST["name1"] ?>"></td></tr> <tr><td>введите фамилию</td> <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="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) } if($error!="ошибка:") {print "<center class=\"t\">$error</center> "; } } ?> 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
квадратные скобки:
Теперь получим в 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" — это адрес обработчика формы, сюда будут отправляться данные формы, после нажатия кнопки Отправить. Также, на параметр
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-форму, должны находиться в одной папке.