在我的表单中,我有几个从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>
非常感谢您的帮助
尝试如下:
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>';
}
Replace
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>';
}