Поиск

Создание массива в экранной форме

На протяжении этой главы мы создавали массивы только внутри РНРскрипта. Однако можно создать массив и послать его в PHPсценарий непосредственно из HTMLформы. Кодирование в таком случае только немного сложнее, чем было до этого. Перепишем страницу с обратной связью из главы 3, чтобы она сразу генерировала массив вместо отдельных переменных.

Создание массива через HTMLформу

  1. Создайте новый HTMLдокумент в текстовом редакторе.
  2. Напишите стандартный HTMLзаголовок.
  3. <HTMLxHEADxTITLE>HTML Form</TITLEx/HEADxBODY>
  4. Откройте HTMLформу.
  5. <FORMACTIQN="HandleForm.php" METHOD=POST>
  6. Создайте три окна для ввода текста с массивами для атрибутов имени.
  7. 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" ]), что вполне приемлемо и помогает избежать синтаксических ошибок.

  8. Создайте текстовую область как часть массива.
  9. Comments <TEXTAREA NAME="Array[Comments]" ROWS=5 COLS=40>
    </TEXTAREAxBR>
  10. Сохраните сценарий как form.html (листинг 7.8) и загрузите его на сервер. Листинг 7.8 * Это HTMLформа с массивом для ввода имен. Нет необходи мости специфицировать ключи для каждого поля, можно просто пометить каж дое поле Array [ ], и тогда имя будет размещено в массиве Array [ 0 ], фамилия в Array [ 1 ], адрес электронной почты в массиве Array [2 ] и комментарии в Array [3].
  11. 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.

  12. Создайте новый PHPдокумент в текстовом редакторе.
  13. <HTMLxHEADxTITLE>Form Results/Using Arrays</TITLEx/HEADxBODYx?php
  14. Возьмите элементы имени и фамилии и объедините их в новый элемент массива.
  15. $Array["Name"] = $Array["FirstName"] .
    " " . $Array["LastName"];

    Мы добавили еще один компонент информации в массив, но данные попреж нему можно обрабатывать с помощью только одной переменной

  16. Распечатайте переданные имя и фамилию в браузере, чтобы подтвердить успешное получение данных из формы.
  17. print ("Your full name is $Array[Name].<BR>\n");
  18. Сохраните страницу как HandleForm.php (листинг 7.9), загрузите ее на сервер в один каталог с form.html и протестируйте оба сценария в браузе ре (рис.).
  19. Листинг 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>

    Применение массивов в HTMLформах очень удобно при использовании много численных триггерных кнопок или ниспадающего меню, когда пользователь может выбрать несколько вариантов.