记住从db填充的用户选中框

时间:2014-03-25 10:02:18

标签: php mysql

我有一个表单,其中包含从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>';

问题是当用户选择其中一些复选框并提交表单并收到错误时,表单无法记住他的选择,他必须重新选择它们。

我该怎么做才能解决这个问题?

提前致谢

1 个答案:

答案 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>