Поиск
Создание массива в экранной форме
На протяжении этой главы мы создавали массивы только внутри РНРскрипта. Однако можно создать массив и послать его в PHPсценарий непосредственно из HTMLформы. Кодирование в таком случае только немного сложнее, чем было до этого. Перепишем страницу с обратной связью из главы 3, чтобы она сразу генерировала массив вместо отдельных переменных.
Создание массива через HTMLформу
- Создайте новый HTMLдокумент в текстовом редакторе.
- Напишите стандартный HTMLзаголовок.
- Откройте HTMLформу.
- Создайте три окна для ввода текста с массивами для атрибутов имени.
- Создайте текстовую область как часть массива.
- Сохраните сценарий как form.html (листинг 7.8) и загрузите его на сервер. Листинг 7.8 * Это HTMLформа с массивом для ввода имен. Нет необходи мости специфицировать ключи для каждого поля, можно просто пометить каж дое поле Array [ ], и тогда имя будет размещено в массиве Array [ 0 ], фамилия в Array [ 1 ], адрес электронной почты в массиве Array [2 ] и комментарии в Array [3].
- Создайте новый PHPдокумент в текстовом редакторе.
- Напишите стандартный HTMLзаголовок, затем открывающий РНРтэг.
- Возьмите элементы имени и фамилии и объедините их в новый элемент массива.
- Распечатайте переданные имя и фамилию в браузере, чтобы подтвердить успешное получение данных из формы.
- Сохраните страницу как HandleForm.php (листинг 7.9), загрузите ее на сервер в один каталог с form.html и протестируйте оба сценария в браузе ре (рис.).
<HTMLxHEADxTITLE>HTML Form</TITLEx/HEADxBODY>
<FORMACTIQN="HandleForm.php" METHOD=POST>
First Name <INPUT TYPE=TEXT NAME="Array[FirstName]" SIZE=20xBR>
Last Name <INPUT TYPE=TEXT NAME="Array[LastName]" SIZE=40xBR>
' ' Email Address <INPUT TYPE=TEXT NAME="Array[Email]" SIZE=60xBR>
В исходной форме, созданной раньше, сценарий HandleForm.php получал переменные $FirstName и $LastName. Теперь он примет $Array [$FirstName], $Array [$LastName] и т.д., что автоматически создаст проиндексированный соответствующим образом массив. Мы рпустили кавычки в ключе массива (было бы $ Array [" $LastName" ]), что вполне приемлемо и помогает избежать синтаксических ошибок.
Comments <TEXTAREA NAME="Array[Comments]" ROWS=5 COLS=40>
</TEXTAREAxBR>
1 <HTML>
2 <HEAD>
3 <TITLE>HTML Form</TITLE>
4 </HEAD>
5 <BODY>
6 <FORM ACTION="HandleForm,php" METHOD=POST>
7 First Name <INPUT TYPE=TEXT NAME="Array[FiratName]° SIZE=20xBR>
8 Last Name <INPUT TYPE=TEXT NAME="Array[LastName]" SIZE=40xBR>
9 Email Address <INPUT TYPE=TEXT NAME="Array[Email]" SIZE=60xBR>
10 Comments <TEXTAREA NAME="Array[Conments]" ROWS=5 COLS=40>
</TEXTAREA><BR>
11 <INPUT TYPE=SUBMIT NAME="SUBMIT" VALUE="Submit!">
12 </FORM>
13 </BODY>
14 </HTML>
Необходимо также написать новую страницу HandleForm.php и отразить в ней изменения, произошедшие в сценарии form.html.
<HTMLxHEADxTITLE>Form Results/Using Arrays</TITLEx/HEADxBODYx?php
$Array["Name"] = $Array["FirstName"] .
" " . $Array["LastName"];
Мы добавили еще один компонент информации в массив, но данные попреж нему можно обрабатывать с помощью только одной переменной
print ("Your full name is $Array[Name].<BR>\n");
Листинг 7.9 т Не имеет значения, получает РНР набор строк из HTMLфор мы или один массив, как в этом случае. Однако при использовании массива остается меньше переменных, которыми можно манипулировать.
1 <HTML>
2 <HEAD>
3 <TITLE>Form Results/Using Arrays</TITLEx/HEAD>
4 <BODY> .
5 <?php
6 /* Эта страница получает и обрабатывает данные, принятые
от "form.html". */
7 $Array["Name"] = $Array["FiretName"] . " " .
$Array["lAstName"] ;
8 print ("Your full name is $Array[Name].<BR>\n");
9 ?>
10 </BODY> . '
11 </HTML>
