Основы PHP
  Что такое PHP?
  Возможности PHP
  Преимущества PHP
  История развития
  Что нового в PHP5?
  «Движок» PHP
  Переход на PHP 5.3
New Переход на PHP 5.6
  Введение в PHP
  Изучение PHP
  Основы CGI
  Синтаксис PHP
  Типы данных PHP
  Переменные в PHP
  Константы PHP
  Выражения PHP
  Операторы PHP
  Конструкции PHP
  Ссылки в PHP
  PHP и ООП
  Безопасность
  Функции PHP
  Функции по категориям
  Функции по алфавиту
  Стандартные функции
  Пользовательские
  PHP и HTTP
  Работа с формами
  PHP и Upload
  PHP и Cookies
  PHP и базы данных
  PHP и MySQL
  Документация MySQL
  Учебники
  Учебники по PHP
  Учебники по MySQL
  Другие учебники
  Уроки PHP
  Введение
  Самые основы
  Управление
  Функции
  Документация
  Математика
  Файлы
  Основы SQL
  Дата и время
  CURL
  Изображения
  Стили
  Безопасность
  Установка
  Проектирование БД
  Регулярные выражения
  Подготовка к работе
  Быстрый старт
  Установка PHP
  Установка MySQL
  Конфигурация PHP
  Download / Скачать
  Скачать Apache
  Скачать PHP
  Скачать PECL
  Скачать PEAR
  Скачать MySQL
  Редакторы PHP
  Полезные утилиты
  Документация
  PHP скрипты
  Скачать скрипты
  Инструменты
  PHP в примерах
  Новости портала
 Главная   »  PHP и HTTP - Работа с HTML формами
 
 

Передача параметров с помощью HTML-форм

Теперь настал момент поговорить о передаче параметров формы PHP скрипту.

Сначала напишем HTML-документ, который будет содержать практически все элементы HTML-формю Параметры формы мы будем передавать скрипту для последующией обработки. Итак, листинг HTML-документа send.html:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Test Form PHP.SU</title>
</head>
<body>
<h3>Тестовая форма</h3>
<form name="form1" method="post" action="script.php">
<p><span>Текстовое поле: </span>
<input type="text" name="textfield">
</p>
<p>Поле ввода пароля:
<input type="password" name="pswfield">
</p>
<p>Скрытое поле hidden
<input name="hidden" type="hidden" id="hidden" value="Скрытое_значение">
</p>
<hr size="1">
<p>Независимые переключатели (checkbox):</p>
<p>
<input type="checkbox" name="checkbox1" value="1">
Вариант первый
<input type="checkbox" name="checkbox2" value="1">
Вариант второй
<input type="checkbox" name="checkbox3" value="1" checked>
Вариант третий (по умолчанию)</p>
<hr size="1">
<p>Зависимые переключатели (radio):</p>
<p>
<input name="radiobutton" type="radio" value="yes">
Да
<input name="radiobutton" type="radio" value="no">
Нет</p>
<hr size="1">
<p>Многострочное текстовое поле (textarea):</p>
<p>
<textarea name="textarea" cols="40" rows="10">Текст по умолчанию</textarea>
</p>
<hr size="1">
<p>Список с единственным выбором:</p>
<p>
<select name=day_s size=1>
<option value=1>Понедельник</option>
<option value=2>Вторник</option>
<option value=3 selected>Среда</option>
<option value=4>Четверг</option>
<option value=5>Пятница</option>
<option value=6>Суббота</option>
<option value=7>Воскресенье</option>
</select>
</p>
<p>Список с множественным выбором (multiple):</p>
<p>
<select name=day_m[] size=7 multiple>
<option value=1 selected>Понедельник</option>
<option value=2>Вторник</option>
<option value=3>Среда</option>
<option value=4>Четверг</option>
<option value=5>Пятница</option>
<option value=6>Суббота</option>
<option value=7>Воскресенье</option>
</select>
</p>
<hr size="1">
<p>
<input type="submit" value="Отослать форму">
&nbsp;&nbsp;&nbsp;&nbsp;<input type="reset" value="Очистить форму">
</p>
<p>&copy;&nbsp;2005 <a href="http://php.su">PHP.SU</a></p>
</form>
</body>
</html>

В окне браузера данная форма будет выглядеть так

Когда пользователь нажимает кнопку "Отослать форму", браузер передаст скрипту следующие параметры:

  • textfield - значение текстового поля;
  • pswfield - значение поля ввода пароля;
  • hidden - значение скрытого поля;
  • параметры checkbox: checkbox1, checkbox2 и checkbox3 будут переданы только в том случае, если соответствующие им независимые переключатели активны;
  • radiobutton - значение группы radio (будет передано одно из значений: Yes или No);
  • textarea - содержимое многострочной текстовой области;
  • day_s - значение списка с единственным выбором;
  • day_m - значения списка с множественным выбором.

Теперь перед нами стоит задача обработки всех параметров переданной формы с помощью PHP скрипта.

Параметры textfield, pswfield и textarea обрабатываются достаточно просто. Например, для отображения значения параметра textfield достаточно написать в обрабатывающем скрипте:

echo $_POST['textfield'];

С параметрами checkbox1, checkbox2, checkbox3, и radiobutton дело обстоит несколько сложнее. Если переключатель не активен, то перечисленные параметры вообще не будут переданы на сервер, как будто их вообще не было. Следовательно, при попытке обратиться в скрипте к этим параметрам, мы получим сообщение, что переменная не существует. Поэтому просто написать echo $_POST['checkbox1']; мы не можем, нам необходимо сначала проверить существование этих параметров в запросе. Проверка существования параметра осуществляется с помощью функции isset(), которая служит для проверки существования переменных.

if (isset($_POST['checkbox1'])) echo $_POST['checkbox1'];
if (isset($_POST['radiobutton'])) echo $_POST['radiobutton'];

Только после проверки существования перечисленных параметров формы можно начинать работу с переменными.

Сложнее обрабатывать параметры списка с множественным выбором, так как в этом случае параметры передаются так:

day_m=01&day_m=03&day_m=07...

Действительно, мы оказались в ситуации, когда один параметр имеет несколько значений. Это напоминает нам массив данных. Действительно, множественный список можно представить в виде массива, а обработать его элементы с помощью цикла foreach. Нам даже не обязательно знать колличество элементов множественного списка. Нам нужно лишь предварительно дать понять PHP, что мы будем передавать массив:

<select name="day_m[]" size=7 mutiple>

Квадратные скобки []- это признак массива. Циклическая обработка массива осуществляется так:

foreach ($_POST['day_m'] as $key=>$value) echo "$key = $value <br>";

А теперь приведем окончательный листинг PHP скрипта, обрабатывающего нашу тестовую форму:

<?php
// Выводим HTML-заголовки:
echo '<html>';
echo '<head>';
echo '<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">';
echo '<title>Test Form PHP.SU</title>';
echo '</head>';
echo '<body>';
echo '<h3>Тестовая форма</h3>';
echo "<p>Переданное значение текстового поля: <b>".$_POST['textfield']."</b></p>";
echo "<p>Переданное значение поля пароля: <b>".$_POST['pswfield']."</b></p>";
echo "<p>Переданное значение скрытого поля hidden: <b>".$_POST['hidden']."</b></p>";
echo '<hr size="1">';
echo '<p>Были включены следующие независимые переключатели: </p>';
if (isset($_POST['checkbox1'])) echo "<p><b>Первый</b></p>";
if (isset($_POST['checkbox2'])) echo "<p><b>Второй</b></p>";
if (isset($_POST['checkbox3'])) echo "<p><b>Третий</b></p>";
echo '<hr size="1">';

if (isset($_POST['radiobutton']))
{
echo '<p>Был выбран независимый переключатель со следующим значением: ';
if ($_POST['radiobutton']==="yes") echo "<b>Yes</b>";
if ($_POST['radiobutton']==="no") echo "<b>No</b>";
echo '</p>';
}
else echo '<p>Ни один из независимых переключателей не был выбран</p>';
echo '<hr size="1">';
echo '<p>Значение многострочного текстового поля :</p>';
echo "<p><b>".$_POST['textarea']."</b></p>";
echo '<hr size="1">';
echo "<p>Значение списка с единственным выбором: <b>".$_POST['day_s']."</b></p>";
echo '<hr size="1">';
echo '<p>Значения списка с множественным выбором: </p>';
foreach ($_POST['day_m'] as $keys=>$values) echo "<b>$values</b><br>";
echo '<hr size="1">';
echo '<p>&copy;&nbsp;2005 <a href="http://php.su">PHP.SU</a></p>';
echo '</body>';
echo '</html>';
?>

Демонстрацию работы приведенного скрипта вы можете посмотреть здесь.

 
 
 <<< Назад 
 Содержание 
 Вперед >>> 
Есть еще вопросы или что-то непонятно - добро пожаловать на наш  форум портала PHP.SU 
 

 
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS