belarusweb.net
© Петр Романовский Минск, 2016-2017.



belarusweb.net

Основы создания сайтов...
PHP+MySQL >>>
                          Учебник Задачник Справочник

10.2. Передача текстовых данных в массивах

В PHP также имеется возможность обрабатывать данные переданные формой в массивах. Рассмотрим данную возможность на примере 10.3.

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">	
	<title>Отправка данных в массивах</title>
</head>
<body>
	<form action="example_10_4.php" method="POST" name="form_10_3"> 
		Введите имя  &nbsp; <input type="text" name="personal[firstName]"><br><br>
		Введите фамилию  &nbsp; <input type="text" name="personal[lastName]"><br><br>
		Предпочитаете &nbsp; 
		 <input type="checkbox" name="choice[]" value="овощи">овощи &nbsp; 
		 <input type="checkbox" name="choice[]" value="фрукты">фрукты<br><br>
		<button type="submit" name="submit" value="send">Отправить</button>
	</form>
</body>
</html>

Пример 10.3. Передача текстовых данных в массивах

Как видно из примера, данные можно группировать в массивы. В нашем случае для первых двух полей мы использовали массив personal с двумя элементами: personal[firstName] и personal[lastName] (ключи в кавычки брать не нужно). В результате этого, после отправки данных формы на сервер, значения, введенные пользователем в поля формы, будут доступны в php-скрипте через $_POST["personal"]["firstName"] и $_POST["personal"]["lastName"] (в самом скрипте кавычки лучше указывать). Если ключи элементов массивов в форме не указать, им будут присвоены числовые ключи. При чем, значение элемента формы, который идет в коде первым, станет первым элементом массива, значение элемента формы, который следует за ним, вторым элементом массива и т.д. В примере мы не указывали ключи элементов массива choice, поэтому на сервере значения, введенные пользователем в поля формы, будут доступны через $_POST["choice"][0] и $_POST["choice"][1]. Данная ситуация показана в примере 10.4.

<?php
 //Чтобы не усложнять пример, будем считать, что все данные были введены 
 //Достаем полученные данные из суперглобального массива $_POST
 //и присваиваем их переменным для удобства использования
 $firstName = $_POST["personal"]['firstName'];
 $lastName = $_POST["personal"]['lastName'];
 //Поскольку в форме мы индексы не указывали, им были назначены числовые индексы
 //согласно их появлению в коде html (индексация начинается с нуля)
 $user_choice_0 = $_POST["choice"][0];
 $user_choice_1 = $_POST["choice"][1];
 
 //Выводим сообщение
 echo $firstName.' '.$lastName.' любит '.$user_choice_0.' и '.$user_choice_1; 
?>

Пример 10.4. Обработка данных, переданных на сервер формой примера 10.3

Передача текстовых данных в массивах может быть весьма удобна при использовании элемента 'select' с заданным атрибутом multiple, который позволяет выбирать сразу несколько элементов списка (см. пример 10.5).

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">	
	<title>Отправка данных в массивах</title>
</head>
<body>
	<form action="example_10_6.php" method="POST" name="form_10_5"> 
		фрукты: 	<select multiple name="fruits[]" size="3">    
						<option value="яблоки">Яблоки</option>
						<option value="апельсины">Апельсины</option>
						<option value="лимоны">Лимоны</option>
					</select> <br><br>
		<button type="submit" name="submit" value="send">Отправить</button>
	</form>
</body>
</html>

Пример 10.5. Использование массива для передачи данных в элементе 'select'

При выборе нескольких значений из списка они будут автоматически добавляться в созданный массив fruits в качестве элементов fruits[0], fruits[1] и т.д., что особенно удобно при большом количестве вариантов.

Напомним, что для выбора нескольких пунктов списка нужно использовать клавиши Ctrl и Shift.

В качестве обработчика данной формы используем php-скрипт примера 10.6. В нем мы в качестве примера присвоили переменной весь переданный массив fruits, а уже затем использовали переменную для получения значений элементов массива по их числовым ключам.

<?php
 //Чтобы не усложнять пример, будем считать, что все данные были введены 
 //Достаем из суперглобального массива $_POST сразу весь массив fruits
 $fruits = $_POST['fruits'];		

 echo 'Вы выбрали все фрукты: '.$fruits[0].', '.$fruits[1].' и '.$fruits[2];		
?>

Пример 10.6. Обработка данных, переданных на сервер формой примера 10.5

Комментарии (0)
Петр Романовский
1. Приветствуются комментарии, которые содержат дополнения к материалу текущей страницы, а также ваши ответы на вопросы других пользователей.
2. Если вам что-то непонятно - спрашивайте, не забывая написать, что именно и с какого места.
Показаны все комментарии
Чтобы оставить свой комментарий, авторизуйтесь, пожалуйста!    
     
belarusweb.net © Петр Романовский, Минск, 2016-2017.
Связаться с автором
Наверх