Основы PHP и MySQL — Операторы выборки (SELECT), вставки (INSERT), обновления (UPDATE) и удаления (DELETE) информации из базы данных. HTML-формы

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

Список. Один вариант выбора

Давайте рассмотрим новый термин «список» (select box), также известный, как «ниспадающий список» или «прокручиваемый список» (как его только не называют). Каждый пункт списка определяется при помощи тега option. Тег option , как и другие элементы ввода, имеет атрибут value , а также текст, заключенный внутри тегов option . Это значит: когда пользователь выберет «Male» , переменной «formGender» ($_POST["formGender"]) будет присвоено значение «M» .

What is your Gender?

Выбранное пользователем значение можно узнать при помощи стандартного массива $_POST , также как обычное текстовое поле ввода.

Всегда хорошо делать первую строку в списке пустой. Это побуждает пользователя сделать выбор и позволяет определить, выбрал ли пользователь что-нибудь из списка. Конечно, потребуется проверка:

You forgot to select your Gender!"; } ?>

Список. Выбираем несколько вариантов

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

Ниже представлена HTML разметка:


Отметьте схожесть с группой флажков. Для начала установите атрибут multiple=«multiple» в теге select . Во-вторых, поместите квадратные скобки в конец значения атрибута name . Сейчас нет необходимости делать первый вариант выбора в списке пустым, так как мы просто проверим, выбрал ли пользователь что-нибудь или нет. Чтобы выбрать несколько значений, используйте при кликах клавиши shift и ctrl .

PHP код для обработки данного списка очень схож с php кодом для обработки . $_POST["formCountries"] возвратит массив из выбранных пользователем значений.

You didn"t select any countries!

\n"); } else { $nCountries = count($aCountries); echo("

You selected $nCountries countries: "); for($i=0; $i < $nCountries; $i++) { echo($aCountries[$i] . " "); } echo("

"); } } ?>

Как обычно, используем isset , чтобы убедиться в том, что пользователь выбрал хоть что-нибудь.

Используем конструкцию switch

Сейчас давайте опять вернемся к списку, в котором присутствует всего один вариант выбора. Наша задача сделать так, чтобы каждому варианту выбора соответствовало строго определенное действие. Конечно, можно использовать инструкцию if , однако она в данном случае способна загрязнить код. Давайте рассмотрим два пути: динамические команды и инструкцию switch .

You forgot to select a country!"; } if($errorMessage != "") { echo("

There was an error with your form:

\n"); echo("
    " . $errorMessage . "
\n"); } else { // оба метода не мгут работать одновременно // закомментируйте тот метод, который вам не требуется // метод 1: switch $redir = "US.html"; switch($varCountry) { case "US": $redir = "US.html"; break; case "UK": $redir = "UK.html"; break; case "France": $redir = "France.html"; break; case "Mexico": $redir = "Mexico.html"; break; case "Russia": $redir = "Russia.html"; break; case "Japan": $redir = "Japan.html"; break; default: echo("Error!"); exit(); break; } echo " redirecting to: $redir "; // header("Location: $redir"); // окончание метода 1 // метод 2: динамический редирект (переадрессация) //header("Location: " . $varCountry . ".html"); // окончание метода 2 exit(); } } ?>

У каждого из этих двух подходов есть свои плюсы и минусы. Метод основанный на switch "е в сущности есть ни что иное, как лаконичная запись ряда конструкций «if» . После ключевого слова case перечисляются возможные варианты значений. В случае совпадения результата вычисления выражения (значение переменной $varCountry) с каким-либо значением, произойдут действия, записанные далее, вплоть до конструкции break . В нашем случае произойдет переадресация к соответствующей для каждой страны странице. Если ни одна страна найдена не будет, то выведется сообщение "Error" , стоящее за ключевым словом default .

Второй метод заключается в передаче выбранного значения функции header , которая перенаправит пользователя к корректной странице.

Первый метод требует написания большего объема кода, но он и более безопасен, так как он позволяет посредством формы переадресовать пользователя к заранее запрограммированным вариантам, при отсутствии варианта выбора будет выведено сообщение об ошибке и выполнение сценария будет прекращено.

Второй метод более краткий (значительно), зато его безопасность сильно снижена. Так любой пользователь может делать с формой, что хочет, и вводить любое значение, какое пожелает. При использовании второго метода сначала желательно проверить выбранные страны, чтобы застраховать себя от переадресации к «вредной» странице.

По материалам . Надеюсь хоть кому-то поможет)

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

Атрибуты тега ... disabled Блокирует выбор из списка. Значение можно задать тремя способами: multiple Позволяет выбрать несколько пунктов списка одновременно. Следует обратить внимание, что при множественном выборе в потоке данных от одной формы может присутствовать несколько переменных с одним и тем же именем. Ваша программа обработки должна предусматривать подобные ситуации и корректно их обрабатывать. name Имя списка. Обязательный атрибут. required Обязательно должен быть выбран пункт с непустым значением. Если это не выполнено, то браузер выведет сообщение, а форма на сервер отправлена не будет. Вид и содержание сообщения зависит от браузера и меняться пользователем не может (не работает в IE и Safari). size Вертикальный размер окна списка. Если атрибут опущен или его значение равно 1, выводится всплывающий список пунктов. Если указано число больше 1, то пункты списка выводятся в окне с полосой прокрутки. Если значение атрибута больше, чем фактическое количество пунктов списка, то добавляются пустые пункты. При их выборе пользователем возвращаются пустые поля.

Пункт списка

Каждый пункт списка ограничивается тегами . Закрывающий тег необязателен.

Атрибуты тега
disabled Блокирует выбор пункта списка. label Метка пункта списка. Если указан атрибут label, то в списке выводится его значение вместо текста внутри тега