我有几个复选框的表单,我想跟踪提交时检查哪些复选框,这样当表单未提交时,我仍然可以重现相同的复选框检查。
这是我的代码,在评论中我到目前为止所尝试的内容:
<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>
答案 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
}
?>