Назначение имен элементов HTML формы в виде массивов 


Назначение имен элементов HTML формы в виде массивов

Опубликовано

 

HTML форма предназначена для обмена данными между сервером и клиентом. Она содержит элементы (input, textarea, select и т.д.) являющиеся своего рода ее переменными. Для идентификации каждому элементу в атрибуте name назначается имя.

В дальнейшем при отправке формы, на стороне сервера ее обрабатывает PHP скрипт, который получает доступ к данным формы посредством обращения к имени элемента. Существует несколько способов назначения имен для элементов веб-форм:

  • с помощью обычного символьного имени;
  • с помощью массива;

Итак, давайте рассмотрим оба варианта:

Форма 1

<form action="" method="POST" name="form1">
 <input type="text" name="firstname" /> Firs name <br />
 <input type="text" name="lastname" /> Last name <br />
 <input type="text" name="phone" /> Phone <br />
 <input type="text" name="email" /> E-mail <br />
 <textarea name="description" /></textarea> <br />
 <input type="submit">
</form>

Форма 2

<form action="" method="POST" name="Form2">
 <input type="text" name="_Form2[firstname]" /> Firs name <br />
 <input type="text" name="_Form2[lastname]" /> Last name <br />
 <input type="text" name="_Form2[phone]" /> Phone <br />
 <input type="text" name="_Form2[email]" /> E-mail <br />
 <textarea name="_Form2[description]" /></textarea> <br />
 <input type="submit">
</form>

Первое что бросается в глаза это разница в написании, во второй форме имена назначаются с помощью массива. Здесь _Form2 – имя массива, указывает принадлежность к форме, а элементы массива _Form2 (firstname, lastname, phone) указывают на характер содержащихся в них данных.

Далее рассмотрена обработка каждой формы, PHP скриптом:

Форма 1

<?php
print "firstname: {$_POST["firstname"]}<br />";
print "lastname: {$_POST["lastname"]}<br />";
print "phone: {$_POST["phone"]}<br />";
print "email: {$_POST["email"]}<br />";
print "description: {$_POST["description"]}<br />";
?>

Форма 2

<?php
$Form2=$_POST["_Form2"];
foreach ($Form2 as $key=>$value){
 print "{$key}: {$value}<br />";
}
?>

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

$Form2=$_POST["_Form2"];

В результате данные в новосозданном массиве $Form2 представлены следующим образом:

Array
(
 [firstname] => Alexandr
 [lastname] => Alexandrov
 [phone] => 5555555
 [email] => mail@mail.ru
 [description] => Client
)

А с помощью цикла foreach можно легко вытащить все данные из массива:

foreach ($Form2 as $key=>$value){
 print "{$key}: {$value}<br />";
}

 

Если имена в названии элементов формы не имеют значения, можно обойтись и без них, тогда форма и скрипт обрабатывающий ее, будут выглядеть следующим образом:

<form action="" method="POST" name="Form3">
 <input type="text" name="_Form3[]" /> Firs name <br />
 <input type="text" name="_Form3[]" /> Last name <br />
 <input type="text" name="_Form3[]" /> Phone <br />
 <input type="text" name="_Form3[]" /> E-mail <br />
 <textarea name="_Form3[]" /></textarea> <br />
 <input type="submit">
</form>

<?php
$Form3=$_POST["_Form3"];
foreach ($Form3 as $key=>$value){
 print "{$key}: {$value}<br />";
}
?>

При обработке PHP скриптом полученной формы, в переменную $Form3 присваивается массив с данными формы, в котором за место имени элемента подставлена его позиция в форме, начиная с 0.

Содержимое массива $Form3:

Array
(
 [0] => Alexandr
 [1] => Alexandrov
 [2] => 5555555
 [3] => mail@mail.ru
 [4] => Client
)