Открыть меню    

Обработка форм PHP, элементы множественного выбора (select, option, checkbox)

списки и флажки Данная статья – это лишь небольшое дополнение (даже можно сказать - памятка) к следующим статьям:

Обрабатываем флажки (checkbox) формы при помощи PHP,

Обработка списка формы при помощи PHP. Теги select и option.

Обрабатываем флажки (checkbox) формы при помощи PHP Флажки и списки содержат выбранные пользователем значения в виде массива. Отсюда следует, что значение атрибута name для элементов списка и флажков должно завершаться квадратными скобками (name = ‛cars[]‛).

Флажки (checkbox) – не перепутайте с переключателями (type=‛radio‛), позволят пользователю выбрать несколько вариантов.
Списки (теги select и option) – присутствует возможность множественного выбора.

HTML

<input type="checkbox" name="cars[]" value="bmw"  />
<input type="checkbox" name="cars[]" value="reno" />
<input type="checkbox" name="cars[]" value="x5"   />

Если вы не поставите скобки, то в скрипт обработки формы будет передан один – последний элемент. Как вы знаете, для группы переключателей (элементы, у которых значение атрибута type равно radio, type=‛radio‛) значение атрибута name не может заканчиваться квадратными скобками, так как переключатель может быть выбран всего один.

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

PHP

if(is_array($_POST['cars']))
{
$_POST['cars'] = implode(', ',$_POST['cars']);
}

Как вы понимаете, элементы множественного выбора не будут добавлены в массив $_POST, если пользователь не отметил их в форме, поэтому не забывайте использовать функцию isset для проверки существования элементов списка или флажков.

Любая форма может быть заполнена некорректно и, соответственно, пользователю придется заново заполнить поля формы. Чтобы пользователю не пришлось заново заполнять, например, флажки, которые успешно прошли валидацию, вы можете в элементах c type=‛checkbox‛ использовать следующий код:

<input type="checkbox" name="cars[]" value="bmw"  

PHP

if($_POST && in_array('bmw', $_POST['cars']) )
{  echo 'checked';  }
/>

Обработка списка формы при помощи PHP. Теги select и option Списки похожи на группу из переключателей, но есть одно существенное отличие: в списке (тег select) один элемент будет выбран ВСЕГДА. В списке выбранные элементы отмечаются атрибутом selected, а не checked - как в случае с переключателями и флажками. В плане обработки списки похожи на флажки: те же квадратные скобки в атрибуте в конце значения атрибута name тега select, множественность выбора и т.д.

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

PHP

if(!isset($_POST['cars']))
{$_POST['cars'] = array();
// продолжаем обрабатывать данные формы
}

Комментарии к статье

аватарка пользователя
2018-10-20
Костя

Мне понравились разъяснения про флажки. У меня получилось выполнить дз. Спасибо!