我似乎无法完成这项工作。我从表中获取数据,如果列中的值= y则必须选中复选框,如果列中的值= n,则不能选中复选框,所有复选框都保持选中状态,即使只有第一行的列= y
<?php
session_start();
include 'datalogin.php';
$sel_course_id = 2;
$sel_date_1 = '2012-05-21';
$sel_date_2 = '2012-05-22';
echo "<form action='' method='post'>";
echo "<strong>Completed the course</strong>";
$sql1 = "SELECT * FROM trn WHERE course_id = '$sel_course_id' AND date_1 = '$sel_date_1' and date_2 = '$sel_date_2'";
$res1 = mysql_query($sql1);
while ($row1 = mysql_fetch_assoc($res1)) {
$rowid1 = $row1['id'];
$uid1 = $row1['usr_id'];
$certificate_name1 = $row1['certificate_name'];
$course_completed1 = $row1['course_completed'];
$sql2 = "SELECT * FROM ex_usrs WHERE id = '$uid1'";
$res2 = mysql_query($sql2);
while ($row2 = mysql_fetch_assoc($res2)) {
$fn2 = $row2['firstname'];
$ln2 = $row2['lastname'];
}
$checked2 = "";
if ($course_completed1 == y) {
$checked2 = "checked";
}
if ($course_completed1 == n) {
$checked2 = "";
}
echo "<input name='question[$rowid1][]' type='checkbox' checked='$checked2' value='1' />$fn2 $ln2";
echo "</br>";
}
echo "</form>";
?>
答案 0 :(得分:2)
为字符串使用引号:
if ($course_completed1 == "y") {
$checked2 = "checked";
}
if ($course_completed1 == "n") {
$checked2 = "";
}
答案 1 :(得分:1)
checked='$checked2'
应该是普通的$checked2
,它是一个布尔属性。
(除非您正在编写XHTML,否则在测试'checked="checked"
后)也应该为其赋予值if ($course_completed1 == "y") {
。
您的测试还应该检查字符串("y"
)而不是常量(y
)。
答案 2 :(得分:0)
如上所述,您需要引用y
和n
来比较字符串值。但即使只有checked=""
,也会导致您的复选框被选中。试着改变你的陈述:
if ($course_completed1 == "y") {
$checked2 = "checked='checked'";
}
elseif ($course_completed1 == "n") {
$checked2 = "";
}
echo "<input name='question[$rowid1][]' type='checkbox' $checked2 value='1' />$fn2 $ln2";