我有一个使用复选框的表单,它从mysql数据库中获取所有数据。所以可以从1到无限制的复选框。
我需要获取提交表单时检查的每一个。
如果检查了所有这些,它会起作用,但如果只检查了一些,它将显示无或只显示其中一个。
以下是我用来显示数据复选框的代码:
while ($myrow = mysqli_fetch_array($result)){
echo<<<END
<input type="checkbox" id="units" name="unit[$i]" value="$myrow[unit_id]" /> $myrow[unit_id]<br />
END;
$i++;
}//end while
以下是我提交表单时使用的代码:
$i=0;
while($_POST["unit"][$i] != ""){
$unit = $_POST["unit"][$i];
$unit = $res2->real_escape_string($unit);
echo $unit."<br />";
$i++;
} // end while
我认为问题在于我有while($_POST["unit"[$1] != "")
并且如果检查了一个盒子然后检查了另一个2或3,那么它会看到第二个为空并停止。
如果是这种情况,我需要帮助弄清楚如何让它贯穿所有并打印出已检查的那些。请记住,可能会有从1到无限制的任何位置,因此它不能是while($i <= 50)
谢谢!
答案 0 :(得分:5)
复选框仅在选中后发送。使用while
时,只要未设置由$_POST['unit'][$i]
表示的复选框,循环就会停止,因此其余的永远不会被评估。您应该考虑对数组使用foreach
:
foreach($_POST["unit"] as $unit) {
echo $unit . "<br />";
}
如果密钥很重要:
foreach($_POST["unit"] as $key => $unit) {
echo $key . " is " . $unit . "<br />";
}
答案 1 :(得分:0)
如果$ i不重要,您应该使用:
名=&#34;单元[]&#34;
并在foreach循环中检索值
foreach($ _REQUEST [&#39; unit&#39;]为$ unit)....