我遇到了复选框问题。我正在做的是显示一个复选框列表,如果以前检查过它们将显示复选标记,然后你提交它们,另一个php应该识别哪些被检查,哪些不是。我的脚本适用于以前未选中的方框,如果你检查它们的动作php识别它,但是对于已经检查的方框我得到通知 - 未定义的变量 - 用于方框(即使未经检查/再次检查)。我似乎无法找到解决方法。
我的代码是
$ind=0; //counting variable
//generating checkboxes from an xml
foreach($xml as $checkbox)
{
$checks=$xml->checkbox[$ind]->active; //the active tag has a 0 or 1 stored.
echo "Activate ".$ind; // shows activate 0, activate 1, etc...
echo "<form name='checkb' action='show.php' method='post'>
echo "<input type='checkbox' name='checks[]' class='act' value='".$ind."'";
if($checks==0){ echo ">";} else{echo " checked ='checked'>";}
echo "<input type='hidden' name='ind' value=".$ind.">";
$ind=$ind+1;
echo "<input type='submit' name='sub' value='Submit'/> </form>"; }
在我的动作php上我有
$chks = $_POST['checks'];
$N = count($chks);
echo("Active checkboxes ");
for($i=0; $i < $N; $i++)
{
echo($chks[$i] . " ");}
所有这一切都运作良好,直到我决定显示以前是否已经检查过这些盒子。所以我想问题是,为什么php不会识别checked = checked为真值?或者还有其他方法吗? 谢谢!
答案 0 :(得分:0)
这里似乎有很多问题。
checked='checked'
前面留出一个空格,让您回复它 - echo " checked='checked'>"
checks
之类的数组,否则您将
只获得该字段的一个值。答案 1 :(得分:0)
我试图尝试清理一下。
$ind = 0;
echo "<form name='checkb' action='show.php' method='post'>";
foreach($xml as $checkbox){
echo "Activate $ind";
echo "<input type='checkbox' name='checks[]' class='act' value='$ind' ".(($checks == 0) ? " />" : " checked='checked' />";
echo "<input type='hidden' name='ind_$ind' value='$ind' />";
$ind++
}
echo "</form>";
注意,就像迈克之前所说的那样,check ='checked'之前有空格,以便组件之间有分离。此外,您的隐藏元素都具有相同的名称,因此我添加了$ ind量词。
希望这有帮助。