Обработка списков в PHP
Всем доброго времени суток. На связи Алексей Гулынин. В статье, посвященной обработке полей формы в PHP, мы с вами убедились, что передавать значения полей формы на обработку достаточно просто. Мы использовали массив $_REQUEST, где в качестве параметра указывали имя поля. И у всех полей были разные имена. Но как скрипт отработает в том случае, когда у полей одинаковые имена и мы выбираем несколько, например такая ситуация возникает при работе со списками, флажками (checkbox). Давайте создадим скрипт, который будет показывать значения из списка, которые мы выбрали. Также будем создавать всё в одном файле:
<?php if (!isset($_REQUEST['start'])) {?>
<?php echo "<form action='$_SERVER[SCRIPT_NAME]'>
<select name='cities' multiple>
<option>Moscow
<option>Piter
<option>Saratov
</select>
<input type='submit' name='start' value='Запустить сценарий'/>
</form>";}
else {
echo "Города: ".$_REQUEST["cities"];
}
?>
Если мы запустим данный скрипт и выберем пару городов, то будет показан только последний. Чтобы иметь возможность вывести все города, необходимо как-то их всех передать. Для этого можно использовать массивы, т.е. в качестве значения атрибута name нашего select можно поставить cities[]:
<?php <select name='cities[]' multiple> ?>
Все города можно вывести с помощью print_r($_REQUEST['cities']) (это быстрый вариант), или воспользоваться циклом foreach:
<?php
foreach ($_REQUEST["cities"] as $city) {
echo "$city ";
}
?>
После этого, сколько бы элементов мы ни выбрали, скрипт нормально отработает и выведет нам все города.
Аналогично будет строиться работа по обработке флажков (checkbox). В отличие от radiobutton, элементов с типом checkbox можно выбрать сколько угодно много.
В качестве домашнего задания:
Создайте скрипт, который будет спрашивать ваш пол (использовать radiobutton), а также языки программирования, которые вы знаете (сделать на выбор 3 языка). На страницу должно выводиться: ваш пол, языки, которые знаете.
Рекомендую сделать самим, но, если возникнут трудности, то код можно посмотреть под хайдом.
<?php if (!isset($_REQUEST['start'])) {?>
<?php echo "<form action='$_SERVER[SCRIPT_NAME]'>
Ваш пол: </br>
<input type='radio' name='sex' value='male'/>Мужской</br>
<input type='radio' name='sex' value='female'/>Женский</br>
Какие языки вы знаете: </br>
<input type='hidden' name='lang1' value=''/>
<input type='checkbox' name='lang1' value='php'/>PHP</br>
<input type='hidden' name='lang1' value=''/>
<input type='checkbox' name='lang1' value='javascript'/>javascript</br>
<input type='hidden' name='lang[CSharp]' value=''/>
<input type='checkbox' name='lang[CSharp]' value='CSharp'/>C#</br>
<input type='submit' name='start' value='Запустить сценарий'/>
</form>";}
else {
if ($_REQUEST['sex'] === "male") echo "Ваш пол: мужской </br>"; else echo "Ваш пол: женский </br>";
echo "Вы знаете следующие языки программирования: </br>";
foreach ($_REQUEST["lang"] as $lang) {
if ($lang !== "") echo "$lang </br>";
}
}
?>
В данной статье вы узнали, как работать с полями множественного выбора в PHP.
На связи был Алексей Гулынин, оставляйте свои комментарии, увидимся в следующих статьях.




