HTML-формы множественного выбора с помощью GET - PullRequest
3 голосов
/ 05 ноября 2011

ПРИМЕЧАНИЕ:

Гугл для этого довольно сложно, потому что "GET" поднимает много "как" получить значение формы с помощью javascript,"и т. д.

ПРОБЛЕМА:

TL; сначала версия DR

Можно ли использовать множественный выборс помощью метода GET формы и до сих пор извлекает каждое отдельное значение?

расширенное объяснение

Требования к поисковому каталогу, который я создаю, включают использованиеметод GET с формой, чтобы пользователь мог видеть свои результаты в URL, а также отправлять прямую ссылку на результаты поиска другому клиенту и т. д.

Одним из полей поиска являетсяполе выбора (поле выбора с атрибутом MULTIPLE).Мой бэкэнд написан на PHP, и я обычно обрабатываю множественный выбор, устанавливая имя переменной массива (name="multiselect[]"), а переменная post включает массив выбранных опций ($_POST["multiselect"] == array()).

Проблемав этом случае значения множественного выбора передаются в строку получения следующим образом:

action?multiselect=1&multiselect=2

Таким образом, независимо от того, какое последнее значение будет заменено, значение первой инициализации переменной в строке получения.(в приведенном выше примере multiselect будет равен 2).

Попытка сделать имя массивом просто заменяет значение массива таким же образом, как это

action?multiselect[]=1&multiselect[]=2

Willрезультат в $_GET["multiselect"] == 2

Я изначально рекомендовал использовать флажок, так как это позволило бы нам по-разному именовать элементы и проверять true / false для каждого из них, но для этого конкретноговыберите, и они хотят, чтобы он был в области прокрутки.

1 Ответ

5 голосов
/ 05 ноября 2011

У меня работает.Только что попробовал

http://www.nearby.org.uk/tmp/multi-test.html

<select name="multiselect[]" ...

Результат в URL - multiselect% 5B% 5D = 2 & multiselect% 5B% 5D = 3

, что составит $ _GET ['multiselect'] массив в PHP.

Возможно, у вас есть что-то еще в вашей системе, зачистка []?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...