我有一个这样的表单,有很多复选框
<form action="myscript.php" method="post">
<select name="myselect>
<option value="1">option1</option>
<option value="2">option2</option>
<option value="3">option3</option>
...
</select>
<ul>
<li><input type="checkbox" name="aaa"/>something1</li>
<li><input type="checkbox" name="aab"/>something2</li>
<li><input type="checkbox" name="aac"/>something3</li>
<li><input type="checkbox" name="aad"/>something4</li>
...
</ul>
<input type="submit" value="Submit"/>
</form>
(选择的选项数量和复选框数量未定义且可能有所不同) 我无法弄清楚如何在没有“混合”我的选择值的情况下检索所有复选框$ _POST值...
在类似的情况下,我只有很多文本框,我这样做了:
foreach($_POST as $key => $value) {
...
}
但在这种情况下,我只有文本框......
答案 0 :(得分:4)
复选框不会提交任何数据,除非他们有名字。如果你给它们所有相同的名字,那么它们将被任何理智的表格数据解析器分组。对于PHP(在其设计的特定部分中针对边缘情况而过度设计),名称必须以[]
结尾。
然后你可以:
<li><input type="checkbox" name="foo[]" value="aaa"/></li>
<li><input type="checkbox" name="foo[]" value="aab"/></li>
<li><input type="checkbox" name="foo[]" value="aac"/></li>
<li><input type="checkbox" name="foo[]" value="aad"/></li>
和
foreach($_POST['foo'] as $value) {
...
}
将遍历所有已选中复选框的所有值(未选中的复选框将不会成功,因此不会出现在数据中)。
答案 1 :(得分:2)
您的复选框元素没有name
个。如果取消选中某个复选框,则该名称不会显示在$_POST
中,如果已选中,则会显示指定值。
<input type="checkbox" name="aaa" value="1"/>
应该给你:
$_POST["aaa"] === "1";