Обработка списков в 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.
На связи был Алексей Гулынин, оставляйте свои комментарии, увидимся в следующих статьях.