验证后记住用户复选框

时间:2014-03-21 17:45:14

标签: php checkbox echo

在我的表单中,我有几个从db表填充的复选框。

问题是,当用户提交表单并收到错误时,表单无法记住他的复选框!

这是我正在处理的代码:

while($n = mysqli_fetch_assoc($q))
{
echo '<div class="checkBoxesList"><label for="'.$n['eName'].'">'.$n['eName'].'</label><input type="checkbox" name="'.$n['eName'].'" id="'.$n['eName'].'" value="'.$n['id'].'" <?php echo (isset($_POST[\''.$n['eName'].'\'])?\'checked="checked"\':\'\') ?> /></div>';
}

我想我在主echo内的第二echo内遇到了问题,但我无法解决它。

仅供参考,我过去通过对表格中的所有复选框进行硬编码来实现这一点。

<div class="checkBoxesList"><label for="firstAid">First Aid</label><input type="checkbox" name="firstAid" id="firstAid" value="1"  <?php echo (isset($_POST['firstAid'])?'checked="checked"':'') ?> /></div>

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

尝试如下:

while($n = mysqli_fetch_assoc($q))
{
 echo '<div class="checkBoxesList"><label for="'.$n['eName'].'">'.$n['eName'].'</label><input type="checkbox" name="'.$n['eName'].'" id="'.$n['eName'].'" value="'.$n['id'].'" '.(isset($_POST[$n['eName']]) ? 'checked="checked"' : '') .' /></div>';
}

答案 1 :(得分:0)

替换

echo '<div class="checkBoxesList"><label for="'.$n['eName'].'">'.$n['eName'].'</label><input type="checkbox" name="'.$n['eName'].'" id="'.$n['eName'].'" value="'.$n['id'].'" <?php echo (isset($_POST[\''.$n['eName'].'\'])?\'checked="checked"\':\'\') ?> /></div>';

if(isset($_POST[$n['eName']])) {
    echo '<div class="checkBoxesList"><label  for="'.$n['eName'].'">'.$n['eName'].'</label><input type="checkbox" name="'.$n['eName'].'" id="'.$n['eName'].'" value="'.$n['id'].'" checked="checked"/></div>';
}
else {
    echo '<div class="checkBoxesList"><label for="'.$n['eName'].'">'.$n['eName'].'</label><input type="checkbox" name="'.$n['eName'].'" id="'.$n['eName'].'" value="'.$n['id'].'" /></div>';
}