这是我的PHP代码:
<?php
include ('../connection.php');
$query00 = mysql_query("SELECT * FROM ta_subjects WHERE USER_ID='$login_session' AND Subject_ID='00000001'",$connection);
while ($row00 = mysql_fetch_array($query00))
{
$thisSub[] = $row00['TopicName'];
}
$arrlength = count($thisSub);
?>
<!--=====Math=======-->
<div class="tab-content">
<div id="math" class="tab-pane fade in active"><br>
<?php
include '../connection.php';
$query = mysql_query("SELECT * FROM topics WHERE SubjectID = '1'",$connection);
while ($row = mysql_fetch_array($query))
{
$sub1 = $row['TopicName'];
?>
<div class="col-sm-6">
<?php
$a=0;
do
{
if($thisSub[$a] == $sub1)
{
?>
<input type="checkbox" class="sub" name="checklist1[]" value="<?php echo $sub1;?>" disabled checked>
<?php
$a = $a + 1;
}
else
$a = $a + 1;
}while($arrlength == $a);
?>
<input type="checkbox" class="sub" name="checklist1[]" value="<?php echo $sub1;?>" disabled>
<label><?php echo $sub1;?></label>
</div>
<?php
}
?>
</div>
它应该看起来像这个
我正在比较数据库中所有受试者的列表和数据库中具有相同ID的受试者,并将其标记为已检查。但它只显示第一个选中的复选框并结束循环。因此,唯一选中的复选框仅为"代数"。我在这里错过了什么?
已解决
解决方法是将第二个复选框放在else块中,而不是像@dreamster建议的那样放在while循环下。
我认为
$query = mysql_query("SELECT * FROM topics WHERE SubjectID = '1'", $connection);
应该是
$query = mysql_query("SELECT * FROM topics", $connection);
也更改
if($thisSub[$a] == $sub1)
至
if(in_array($sub1, $thisSub))
我不确定我是否答对了,但试一下这样的方法,如果你告诉我们一些变量的来源,我们可以更好地帮助你,为什么要等待?
$a = 0;
// $thisSub = []; put this before you first while loop
while ($row = mysql_fetch_array($query))
{
$sub1 = $row['TopicName']; ?>
<div class="col-sm-6">
<input type="checkbox" class="sub" name="checklist1[]" value="<?php echo $sub1;?>" disabled <?php echo (in_array($sub1, $thisSub)) ? 'checked="checked"' : ''; ?> >
<?php $a++; ?>
<label><?php echo $sub1;?></label>
</div>
<?php
}