如何在未提交表单时重现已选中的复选框

时间:2015-12-24 10:27:43

标签: php checkbox dynamic

我有几个复选框的表单,我想跟踪提交时检查哪些复选框,这样当表单未提交时,我仍然可以重现相同的复选框检查。

这是我的代码,在评论中我到目前为止所尝试的内容:

<div class="control-group">                         
    <label class="control-label">Course</label>
    <div class="controls">
        <?php
        $sql="SELECT * FROM tbl_course";
        $st=$db->prepare($sql);
        $st->execute();
        while($coursers=$st->fetch(PDO::FETCH_ASSOC))
        {
            $rs=$coursers['course'];
            $idrs=$coursers['id'];
        ?>
            <label class="checkbox">
            <input type="checkbox" name="coursecheck[]" value="<?php
            echo $idrs; 
            ?> " 
            <?php
            /*   $array_name=compact($idrs);
                $_SESSION['assign']=ass($post['coursecheck']);
            if(in_array($array_name,$_SESSION['assign']))
            {
                "checked";
            } */ ?>
            />
            <?php echo $rs; ?>
            </label>
        <?php } ?>      
    </div>
</div>

1 个答案:

答案 0 :(得分:0)

您在评论中添加的尝试代码正朝着正确的方向发展。

您必须确保已创建会话,并且每次提交 表单时都应填充会话变量,以便在未提交表单时重现检查。< / p>

另请注意,您可以写<?= ?>而不是<?php echo ?>

以下是建议的代码(我没有重复div代码):

<?php
// make sure you have a session:
session_start();
// set the "coursecheck" session variable
if (isset($_post['coursecheck'])) {
    // form was submitted, take the checkbox checks
    $_session["coursecheck"] = $_post['coursecheck'];
} elseif (!isset($_session["coursecheck"])) {
    // we don't have the information, make empty array
    $_session["coursecheck"] = array();
}
$sql="SELECT * FROM tbl_course";
$st=$db->prepare($sql);
$st->execute();
while($coursers=$st->fetch(PDO::FETCH_ASSOC))
{
    $rs=$coursers['course'];
    $idrs=$coursers['id'];
?>
    <label class="checkbox">
    <input type="checkbox" name="coursecheck[]"
           value="<?=$idrs?>"
           <?=in_array($idrs, $_session['coursecheck']) ? "checked" : ""?>
    />
    <?= $rs ?>
    </label>
<?php
}
?>