复选框组的值在查询字符串中是正确的,但不是 $_GET 变量中的数组
Values from checkbox group are correct in querystring, but are not arrays in the $_GET variable
我有一个表单,其中有一个复选框组,如下所示:
<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 />
当我 select 多个国家和 运行 表单和 print_r 查询字符串和 $_GET 数组时,查询字符串如下所示:
report=rawdata&sales=sales&kenp=kenp&startdate=&enddate=&format=table&track=unit&countries=US&countries=CA&countries=AU&countries=UK&allchannels=All&channels=2&channels=1&books=5&submit=Get+Report
$_GET 数组如下所示:
Array ( [report] => rawdata [sales] => sales [kenp] => kenp [startdate] => [enddate] => [format] => table [track] => unit [countries] => UK [allchannels] => All [channels] => 1 [books] => 5 [submit] => Get Report [SQLiteManager_currentLangue] => 2 )
如您所见,它只是 selecting countries 数组中的最后一项。 (同样的事情发生在这个表单的复选框组中,例如频道)。
我在测试环境中工作 运行在我的 Mac 上使用 MAMP,FWIW。
奇怪的是它工作正常。 (我试过重新启动 MAMP,然后重新启动我的整个系统,看看是否有影响,但似乎没有。)
我可能在某处遗漏了一些愚蠢的东西,但我现在已经看了这么久,我要斗鸡眼了。如有任何帮助,我们将不胜感激。
我认为你需要为你的 select 做一个数组:
<select name="countries[]" multiple>
然后在你的php代码中处理数组。
PHP 根据字段的 name 确定表单数据是否应显示为字符串或数组,而不是它出现的次数。
将 []
附加到 HTML 中的名称属性。
我有一个表单,其中有一个复选框组,如下所示:
<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 />
当我 select 多个国家和 运行 表单和 print_r 查询字符串和 $_GET 数组时,查询字符串如下所示:
report=rawdata&sales=sales&kenp=kenp&startdate=&enddate=&format=table&track=unit&countries=US&countries=CA&countries=AU&countries=UK&allchannels=All&channels=2&channels=1&books=5&submit=Get+Report
$_GET 数组如下所示:
Array ( [report] => rawdata [sales] => sales [kenp] => kenp [startdate] => [enddate] => [format] => table [track] => unit [countries] => UK [allchannels] => All [channels] => 1 [books] => 5 [submit] => Get Report [SQLiteManager_currentLangue] => 2 )
如您所见,它只是 selecting countries 数组中的最后一项。 (同样的事情发生在这个表单的复选框组中,例如频道)。
我在测试环境中工作 运行在我的 Mac 上使用 MAMP,FWIW。
奇怪的是它工作正常。 (我试过重新启动 MAMP,然后重新启动我的整个系统,看看是否有影响,但似乎没有。)
我可能在某处遗漏了一些愚蠢的东西,但我现在已经看了这么久,我要斗鸡眼了。如有任何帮助,我们将不胜感激。
我认为你需要为你的 select 做一个数组:
<select name="countries[]" multiple>
然后在你的php代码中处理数组。
PHP 根据字段的 name 确定表单数据是否应显示为字符串或数组,而不是它出现的次数。
将 []
附加到 HTML 中的名称属性。