Работа с html select в режиме multiple, отличия от обычного режима

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

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

В этом режиме поле select отображается браузером не как элемент с выпадающим списком. Для сравнения, посмотрите как выглядит один и тот же select в браузере без флажка multiple и с ним:

Читаем значения поля SELECT из javaScript.

В чем отличие от одиночного режима (без multiple флага)? В том и другом случаях можно прочитать значение поля через свойство элемента value. Но так мы получим только одно единственное значение. Как получить все значения, выбранные пользователем в списке?

Мы будем программно проверять включен ли флаг multiple, и в соответствии с ситуацией выбирать способ как получить значения(-ие). Для универсальности можно складывать значения в некоторый массив.  Если multiple == true — надо сканировать массив options, иначе достаточно обратиться к свойству value.

Как прочитать множественные значения, передаваемые в программу на PHP?

Если вы используете HTML код, вроде приведенного в начале статьи, то при выборе нескольких значений будут отправлены данные формы вида:

Которые в PHP будут интерпретированы как GET параметр $_GET[‘elm’] = ‘ny’. Т.е. вы получите всего одно значение.

Чтение raw данных

Если поменять метод формы на POST, то можно прочитать входные данные из потока php://input

Вы получите всю строку — «elm=msk&elm=paris&elm=london&elm=ny», но её нужно будет ещё правильно разобрать. Потому так не делают, а идут на небольшую хитрость. К имени поля в HTML добавляют квадратные скобки:

Благодаря этому приему массив $_REQUEST в PHP сразу получает переменную elm в виде массива значений. Т.е.

Мало букафф? Читайте есчо !

Как определить ip адрес посетителя сайта в PHP

Ноябрь 13, 2015 г.

PHP не имеет каких то специальных средств для определения ip адреса. Эту информацию ему поставляет веб-сервер в виде переменных окружения. Используя ...

Читать

Организация не дискретной навигации в Swiper

Март 21, 2025 г.

Один из режимов навигации в Swiper - называется freemode. Он позволяет листать слайды (тащить мышкой или свайпить) без фиксации на границах слайда. Но если вы используете навигацию, то перелистывание будет производиться дискретно по слайдам. В ...

Читать

Имя файла по handle в PHP

Июнь 15, 2016 г.

Всем привычна схема, при которой известно имя файла, и вы совершаете с ним какие то манипуляции. В PHP много функций, которые предоставляют именно такой функционал. Что делать, когда есть только file handle? Как получить имя открытого файла? ...

Читать

Определить город по IP адресу

Май 4, 2017 г.

Писал ранее об API ipinfo.io. Сервис позволяет вытащить как гео координаты, так и названия города, региона, страны. Единственный недостаток - информация на английском языке. В данной статье рассмотрим пару примеров использования сервиса. Обращение ...

Читать
 

Комментарии к «Работа с html select в режиме multiple, отличия от обычного режима»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: