Значения из группы флажков верны в строке запроса, но не являются массивами в переменной $_GET

#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-коде.