2.6. Обработка массивов

Рассмотрены почти все возможности РНР по автоматической трансляции данных формы. Напоследок взглянем на еще одно полезное свойство РНР. Пусть имеется такая форма:

Листинг txt1.html. Форма для примера «Обработка массивов»

<html>

<head>

<title>Обработка массивов</title>

</head>

<body>

<form action=hello4.php>

Имя: <input type=text name=Data[name]><br>

Адрес: <input type=text name=Data[address]><br>

Город: <br>

<input type=radio name=Data[city] value=Newomoscow>Новомocковск<br>

<input type=radio name=Data[city] value=Kiev>Kиев<br>

<input type=submit vа1ue = “Нажмите кнопку, чтобы запустить сценарий! «>

</form>

</body>

</html>

В окне браузера форма выглядит следующим образом:

После передачи подобных данных сценарию на РНР в нем будет инициализирован ассоциативный массив $Data с ключами name, address и city. То есть, имена полям формы можно давать не только простые, но и представленные в виде одномерных ассоциативных массивов.

В сценарии к отдельным элементам формы можно обратиться при помощи указания ключа массива: например, $_REQUEST ['Data'] ['city'] обозначает значение той радиокнопки, которая была выбрана пользователем, а $_REQUEST ['Data'] ['name'] — введенное имя.

Предупреждение. В сценарии обязательно нужно заключать ключи в кавычки или апострофы. В противном случае интерпретатором будет выведено предупреждение. В то же время, в параметрах name полей формы, наоборот, нужно их избегать — так устроен РНР.

Напишем сценарий.

Листинг hello4.php. Сценарий для обработки массива

<?php

echo “<bг><b>Список month4 </b><br>” ;

foreach ($_REQUEST[’Data’] as $key=>$value)

echo “$key = $value <br>”;

?>

2.7. Особенности обработки независимых переключателей

 

Рассмотрим вопрос, который находит частое практическое применение в Web-программировании. Независимый переключатель (checkbox или более коротко — флажок) имеет одну довольно неприятную особенность, которая иногда может помешать Web-программисту. Если перед отправкой формы пользователь установил независимый переключатель в выбранное состояние, то сценарию в числе других параметров приходит пара имя_флажка=значение. В то же время, если флажок не был установлен пользователем, указанная пара не посылается.

Для упрощения обработки, хотелось бы, чтобы в невыбранном состоянии флажок также присылал данные, но только значение было равно какой-нибудь специальной величине — например, нулю или пустой строке.

Добиться этого эффекта в РНР довольно несложно. Достаточно воспользоваться одноименным скрытым полем (hidden) со значением, равным, например, нулю, поместив его перед нужным флажком.

Листинг checkbox.php. Особенности обработки независимых переключателей

<?php # # Гарантированный прием значений от флажков.

if (@$_REQUEST[’doGo’] )

{

foreach (@$_REQUEST [’known’] as $k=>$v)

{

if($v) echo «Вы знаете язык $k!<br>»;

else echo «Вы не знаете языка $k. <br>»;

}

}

?>

<form action=”<?=$_SERVER[’SCRIPT_NAME’]?>” method=post>

Какие языки программирования вы знаете?<br>

<input type=hidden name=”known[PHP]” value=”0”>

<input type=checkbox name=”known[PHP]” value=”l”>PHP<br>

<input type=hidden name=”known[Perl] “ value=”0”>

<input type=checkbox name=”known[Perl]” value=”l”>Perl<br>

<input type=submit name=”doGo” value=”Go!”>

</form>

Инструкция foreach предназначена для перебора всех элементов массива, указанного в ее первом аргументе.

Теперь в случае, если пользователь не выберет никакой из флажков, браузер отправит сценарию пару known [язык] = 0, сгенерированную соответствующим скрытым полем, и в массиве $_request [' known'] создастся соответствующий элемент:


Если пользователь выберет флажок, эта пара также будет послана, но сразу же после нее последует пара known [язык] =1, которая «перекроет» предыдущее значение:

Если бы не были включены скрытые поля в форму, сценарий печатал бы только сообщения о тех языках, которые «знает пользователь», пропуская языки, ему «неизвестные». В рассмотренном случае сценарий реагирует и на сброшенные флажки.

Такой способ немного увеличивает объем данных, передаваемых методом post, за счет тех самых пар, которые генерируются скрытыми полями. Впрочем, в реальной жизни это «увеличение» практически незаметно (особенно для POST-форм).



Информация о работе «Web-программирование. Обработка HTML-форм»
Раздел: Информатика, программирование
Количество знаков с пробелами: 65231
Количество таблиц: 1
Количество изображений: 45

Похожие работы

Скачать
183471
45
12

... Java, JavaScript и встроенные в сервер средства LiveConnect. Более мощными реляционными возможностями доступа к базе данных и более эффективным выполнением виртуальной Java-машины будут расширены услуги разработки приложений, обеспечиваемых в Enterprise Server 2.0,. Сервис управления. В дополнение к использованию встроенной машины каталога LDAP Enterprise Server 2.0 будет управляем через общие ...

Скачать
255323
33
27

... в помещении представлена на рисунке 4.1 Рисунок 4.1 - Схема размещения светильников в аудитории № 209. Заключение В работе проведено исследование использования программ дистанционного обучения для подготовки учебно-методической документации, описаны их положительные стороны и выявлены основные проблемы. В результате проведенного исследования разработано web-приложение "R@Learning ...

Скачать
22762
0
4

текста, насыщенного изображениями, звуком, анимацией, видеоклипами и гипертекстовыми ссылками на другие документы. Можно работать на Web без знания языка HTML, поскольку тексты HTML могут создаваться разными специальными редакторами и конвертерами. Но писать непосредственно на HTML нетрудно. Возможно, это даже легче, чем изучать HTML-редактор или конвертер, которые часто ограничены в своих ...

Скачать
50516
1
25

... высокого быстродействия. Их реализация существенно снижает скорость сервера. Эти возможности не являются критичными при создании web-приложений, что в сочетании с высоким быстродействием и малой ценой позволило серверу приобрести большую популярность.   3.2. Примеры использования PHP совместно с MySQL   3.2.1. Работа с формами В этом примере показано как в PHP легко обрабатывать данные с ...

0 комментариев


Наверх