#php #arrays #checkbox #get #query-string
#php #массивы #флажок #получить #строка запроса #получаем
Вопрос:
У меня есть форма с группой флажков, которая выглядит следующим образом:
<label><input type="checkbox" name="countries" value="US" class="chkcountries" checked="checked" /> United States</label><br />
<label><input type="checkbox" name="countries" value="FR" class="chkcountries" checked="checked" /> France</label><br />
<label><input type="checkbox" name="countries" value="CA" class="chkcountries" checked="checked" /> Canada</label><br />
<label><input type="checkbox" name="countries" value="AU" class="chkcountries" checked="checked" /> Australia</label><br />
<label><input type="checkbox" name="countries" value="UK" class="chkcountries" checked="checked" /> United Kingdom</label><br />
<label><input type="checkbox" name="countries" value="DE" class="chkcountries" checked="checked" /> Germany</label><br />
<label><input type="checkbox" name="countries" value="Ja" class="chkcountries" checked="checked" /> Japan</label><br />
<label><input type="checkbox" name="countries" value="IT" class="chkcountries" checked="checked" /> Italy</label><br />
<label><input type="checkbox" name="countries" value="IN" class="chkcountries" checked="checked" /> India</label><br />
<label><input type="checkbox" name="countries" value="ES" class="chkcountries" checked="checked" /> Spain</label><br />
<label><input type="checkbox" name="countries" value="BR" class="chkcountries" checked="checked" /> Brazil</label><br />
<label><input type="checkbox" name="countries" value="NL" class="chkcountries" checked="checked" /> Netherlands</label><br />
<label><input type="checkbox" name="countries" value="MX" class="chkcountries" checked="checked" /> Mexico</label><br />
Когда я выбираю более одной страны и запускаю форму и печатаю_r как строку запроса, так и массив $ _GET, строка запроса выглядит следующим образом:
report=rawdataamp;sales=salesamp;kenp=kenpamp;startdate=amp;enddate=amp;format=tableamp;track=unitamp;countries=USamp;countries=CAamp;countries=AUamp;countries=UKamp;allchannels=Allamp;channels=2amp;channels=1amp;books=5amp;submit=Get Report
и массив $ _GET выглядит следующим образом:
Массив ( [отчет] => rawdata [продажи] => sales [kenp] => kenp [дата начала] => [дата окончания] => [формат] => таблица [трек] => единица измерения [страны] => ВЕЛИКОБРИТАНИЯ [allchannels] => Все [каналы] => 1 [книги] => 5 [отправить] => Получить отчет [SQLiteManager_currentLangue] = > 2 )
Как вы можете видеть, выбирается только последний элемент в массиве countries. (То же самое происходит в группах флажков в этой форме, например, channels).
Я работаю в тестовой среде, в которой запущен MAMP на моем Mac, FWIW.
Странно то, что это работало должным образом. (Я попытался перезагрузить MAMP, а затем перезагрузить всю мою систему, чтобы посмотреть, имеет ли это значение, и, похоже, это не так.)
Возможно, я где-то пропустил что-то глупое, но я так долго на это смотрел, что у меня глаза разбегаются. Любая помощь была бы высоко оценена.
Комментарии:
1. Измените
name="countries"
наname="countries[]"
и посмотрите, поможет ли это.
Ответ №1:
PHP определяет, должны ли данные формы быть представлены в виде строки или массива, на основе имени поля, а не количества раз, когда оно появляется.
Добавьте []
к атрибуту name в HTML.
Ответ №2:
Я думаю, что вам нужно создать массив для вашего выбора :
<select name="countries[]" multiple>
А затем разберитесь с массивом в своем php-коде.