嗨,谢谢你阅读我的问题。我使用一个简单的表单来获得一些输入:
<p>Select your favorite two countries below:</p>
<form id="world" name="world" action="/order.php" method="post">
<input type="checkbox" name="countries" value="USA" /> USA<br />
<input type="checkbox" name="countries" value="Canada" /> Canada<br />
<input type="checkbox" name="countries" value="Japan" /> Japan<br />
<input type="checkbox" name="countries" value="China" /> China<br />
<input type="checkbox" name="countries" value="France" /> France<br />
<input type="submit" value="Order">
</form>
我想确保order.php正在考虑所有选择的选项,因此order.php只包含以下代码:
<pre>
<?php var_dump($_POST);?>
</pre>
不幸的是,只输出whatevre是检查的最底部的复选框。
输出如下:
array(1){ [&#34;国家&#34;] =&GT; string(6)&#34; Canada&#34; }
如果我尝试以下代码输出:
<?php
foreach($_POST as $key=>$post_data){
echo "You posted:" . $key . " = " . $post_data . "<br>";
}
?>
我得到了这个输出:
您发布了:countries = Canada
任何人都可以告诉我我哪里出错了,以及如何检索所有数据,对于每个勾选的方框?
谢谢。
答案 0 :(得分:1)
您为复选框提供了相同的name
,PHP将使用当前值覆盖以前解析的name
提交。你需要使用array-notation hack:
<input type="checkbox" name="countries[]" value="Canada" /> Canada<br />
^^
然后使$_POST['countries']
成为提交的所有值的数组。
echo "You posted: " . implode(',', $_POST['countries']);
答案 1 :(得分:0)
<p>Select your favorite two countries below:</p>
<form id="world" name="world" action="/order.php" method="post">
<input type="checkbox" name="countries[]" value="USA" /> USA<br />
<input type="checkbox" name="countries[]" value="Canada" /> Canada<br />
<input type="checkbox" name="countries[]" value="Japan" /> Japan<br />
<input type="checkbox" name="countries[]" value="China" /> China<br />
<input type="checkbox" name="countries[]" value="France" /> France<br />
<input type="submit" value="Order">
</form>
将其更改为上面,这将为您存储所有复选框结果!