ТОП-10 популярных



Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...

НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...

БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...

Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...

ПОД ЛИТЕРОЙ «N»
Aтаку LCD-мониторов не остановить, а масштабы этого наступления даже немного пугают. Судите сами — многие пользователи только начинают приглядываться к новому для...


Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...

Размер объему не помеха.
С тех пор как компания Fujitsu отказалась от производства жестких дисков для настольных компьютеров, многие пользователи начали забывать о том,...


Какую только информацию мы не помещаем на компакт-диски: резервные копии важных данных, музыку, фильмы... Многие полагают, что главное - «купить...

PHP. Операции ввода-вывода и доступ к диску. Часть Четвёртая.


28-12-2009

7.5. Ввод в формах
Процесс отправки текста в браузер прост, а получение ввода из форм - процесс куда более сложный. HTML-формат предлагает несколько способов получения информации от пользователей через формы - с помощью текстовых полей, текстовых областей, списков выборки и радиокнопок. Все они становятся текстовой строкой, отправленной на Web-сервер, в тот момент, когда пользователь щелкает на имеющейся в форме кнопке submit.
Когда кто-либо щелкает на кнопке submit, расположенный в форме, PHP преобразует поля формы в элемент массива _REQUEST. PHP создает их так, как если бы вы написали такой PHP-код сами. Это значит, что если на странице разместить две переменные формы с одним и тем же именем, значение второй переменной изменит значение первой, и вы сможете отправлять массивы в поля форм. Но к данному вопросу мы вернемся позднее.
Все поля форм при обработке методом GET также попадают в переменную _GET, а все поля форм при обработке методом POST попадают в переменную _POST. Если переменные GET и POST имеют одно и то же имя, для определения, какую из них применять первой, PHP использует директиву variables_order. По умолчанию PHP сначала заполняет массив _REQUEST значениями переменных GET, затем переменных POST и файла cookie. Например, если файл cookie и POST имеют одно и то же имя, в массив _REQUEST будет записано значение cookie.
Листинг 7.2 представляет собой пример использования переменных, созданных из полей форм. Сценарий ожидает переменную color. При первом просмотре страницы переменная color является пустой, поэтому сценарий задает ее равной шести F, или, другими словами, чисто-белым цветом. При последующем вызове страницы значение текстового поля принимает цвет фона страницы. Обратите также внимание, что сценарий проставляет в поля ввода значения color. Таким образом, при каждом выводе формы он помнит то, что было введено прежде. Кроме того, возможно, вы обратили внимание на "фокус", который здесь имел место: страница рекурсивно вызывает сама себя.

| Листинг 7.2. Получение ввода с помощью формы
<?php
print("<html>n"); print("<head>n");
print("<title>Листинг 7-2</title>n");
print("</head>n");
// в первый раз

// для фона используется белый цвет
if(!isset($_REQUEST['color']))
{
$_REQUEST['color'] = "FFFFFF";
}
// открыть форму с фоновым цветом
print("<body bgcolor="#{$_REQUEST['color']}">n");
// запуск формы, в которой действием является сама страница
print("<form " .
"action="{$_SERVER['PHP_SELF']}" " .
"method="post">n");
// запрос цвета print("<b>цвет HTML:</b> " .
"<input type="text" name="color" " .
"value="{$_REQUEST['color']}">n"); // отобразить кнопку submit
print("<input type="submit" value="Попробуйте ">n");
print("</form>n"); print("</body>n");
print("</html>n");
?>

7.6. Передача массивов в формах
Несмотря на абсолютную неочевидность такого метода, массивы можно передавать непосредственно из форм. Для того чтобы понять, как это делается, необходимо вспомнить, каким образом поля преобразуются в переменные PHP. Каждое поле счи-тывается по очереди и преобразуется в оператор присвоения. URL вида http://www.example.com/script.php?name=leon выполняет присвоение вида $name = "leon". По умолчанию PHP размещает присвоенные значения в набор ассоциативных массивов.
PHP рассматривает имя поля формы в качестве левой части оператора присвоения. Это значит, что если другие специальные символы являются частью имени поля, PHP интерпретирует их соответствующим образом. Можно также воспользоваться квадратными скобками, чтобы сделать переменную массивом. Пустая пара квадратных скобок добавит в массив новое значение с использованием последовательных целых индексов. Таким образом, присвоение нескольким полям формы одного и того же имени, которое завершается парой пустых квадратных скобок, приведет к созданию массива в процессе заполнения формы (листинг 7.3).

Листинг 7.3. Ввод массива значений с помощью формы

<?php
print("<html>n"); print("<head>n");
print("<title^^TOmp 7.3</title>n"),-print("</head>n"); print("<body>n"); if(isset($_REQUEST['part']))

print("<h3>Последний бюргер^!^^^'),-print("<ul>n");
foreach($_REQUEST['part'] as $part)
{
print("<li>$part</li>n");
}
print("</ul>n");
}
$option = array("горчица", "кетчуп", "соленье", "лук", "салат", "помидоры"); print("<h3>Создание бюргера^!^^^'),-
print("<form action="{$_SERVER['PHP_SELF']}">n"),-
foreach($option as $o)
{
print("<input type="checkbox" " .
"name="part[]" value="$o">" . "$o<br>n");
}
print("<input type="submit">n");
print("</form>n");
print("</body>n");
print("</html>n");
?>

Понравился материал? Поделитесь с друзьями!



<< Предыдущая статьяСледующая статья >>
PHP. Операции ввода-вывода и доступ к диску. Часть Третья. PHP. Операции ввода-вывода и доступ к диску. Часть Пятая.