php保留一个数组复选框


php retain an array checkbox

我是个十足的傻瓜,但我到处都找不到解决方案。

我所拥有的是从数据库中提取的一系列课程(例如:数学、艺术、科学)。这些可能会改变,所以我必须一直添加新课程。

例如,当用户勾选了3门课程中的2门,但未能添加用户名时,在验证后,我希望这2个复选框保持原来的勾选,因此他必须只填写用户名才能继续。

我得到的是所有勾选的复选框:{

我很困惑。

<?PHP
$check="unchecked";
?>
<?PHP
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
    foreach ($_POST['cid'] as $cid ) {
        $check="checked";
    }
}
?>
<?PHP 
$course_data = "SELECT * FROM course ORDER BY cname";
$get_course = mysql_query($course_data) or die (mysql_error());
while ($db_field = mysql_fetch_assoc($get_course)){
    $cname= $db_field['cname'] ;//course name
    $cid= $db_field['cid'] ;// course id
    print"<BR>". 
    "<FONT COLOR='blue' SIZE='4'><B>$cname</B></FONT>".
    "<input type='checkbox'  name='cid[]' value='$cid' $check>"; // here are the courses(checkboxes)
}
?>

您必须为每个复选框独立设置$checked变量。

$checkedBoxes = array();
foreach($cid as $id) {
    $checkedBoxes[$id] = "checked='false'";
}
foreach ($_POST['cid'] as $cid) {
    $checkedBoxes[$cid] = "checked='true'";
}

然后在输出复选框的循环中,打印相应的$checked值。

while ($db_field = mysql_fetch_assoc($get_course)){
    $cname= $db_field['cname'] ;//course name
    $cid= $db_field['cid'] ;// course id
    print"<BR>". 
    "<FONT COLOR='blue' SIZE='4'><B>$cname</B></FONT>".
    "<input type='checkbox'  name='cid[]' value='$cid' {$checkedBoxes[$cid]}>"; // here are the courses(checkboxes)
}

这就是您想要的吗?

<?PHP
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
    $cid_array = $_POST['cid'];
/*foreach ($_POST['cid'] as $cid ) {
$check="checked";
}*/
}
?>

<?PHP 
$course_data = "SELECT * FROM course ORDER BY cname";
$get_course = mysql_query($course_data) or die (mysql_error());
while ($db_field = mysql_fetch_assoc($get_course)){
    $cname= $db_field['cname'] ;//course name
    $cid= $db_field['cid'] ;// course id
    if(is_array($cid_array))
{
    if(in_array($cid, $cid_array))
    {
        $check="checked='checked'";
    }
    else
    {
        $check="";
    }
}
else//it is not array because nothing was checked
{
    if($cid == $cid_array)
    {
        $check="checked='checked'";
    }
    else
    {
        $check="";
    }
}
print"<BR>". 
"<FONT COLOR='blue' SIZE='4'><B>$cname</B></FONT>".
"<input type='checkbox'  name='cid[]' value='$cid' $check>"; // here are the courses(checkboxes)
}
?>