我有一个表单,其中包含从db
填充的几个复选框的 CODE: 的
// populating Checkboxes from db
echo '<div>
<label for="'.$n['eName'].'">'.$n['eName'].'</label>
<input type="checkbox" name="skills[]" id="'.$n['eName'].'" value="'.$n['id'].'" '.(isset($_POST[$n['eName']]) ? 'checked="checked"' : '') .' />
</div>';
问题是当用户选择其中一些复选框并提交表单并收到错误时,表单无法记住他的选择,他必须重新选择它们。
我该怎么做才能解决这个问题?
提前致谢
答案 0 :(得分:1)
这是不正确的:
isset($_POST[$n['eName']]
你应该查看$ _POST [&#39;技能&#39;]数组。
根据您对 $ n [&#39; eName&#39;] 的实施情况,以下代码可能有效:
echo '<div>
<label for="'.$n['eName'].'">'.$n['eName'].'</label>
<input type="checkbox" name="skills['.$n['eName'].']" id="'.$n['eName'].'" value="'.$n['id'].'" '.(isset($_POST['skills'][$n['eName']]) ? 'checked="checked"' : '') .' />
</div>';
ps:请注意, $ n [&#39; eName&#39;] 中的任何引文都很可能会破坏您的代码 - 应该对这些案例采取措施。
修改强>
<form method=post>
<?php
$n['id']='someid';
$n['eName'] = 'test';
echo '<div>
<label for="'.$n['eName'].'">'.$n['eName'].'</label>
<input type="checkbox" name="skills['.$n['eName'].']" id="'.$n['eName'].'" value="'.$n['id'].'" '.(isset($_POST['skills'][$n['eName']]) ? 'checked="checked"' : '') .' />
</div>';
?>
<input type=submit >
</form>