PHP var_dump只输出底部复选框的值

时间:2014-10-27 17:03:34

标签: php forms post input var-dump

嗨,谢谢你阅读我的问题。我使用一个简单的表单来获得一些输入:

<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

任何人都可以告诉我我哪里出错了,以及如何检索所有数据,对于每个勾选的方框?

谢谢。

2 个答案:

答案 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>

将其更改为上面,这将为您存储所有复选框结果!