html表格行未正确显示。我想在表格行中组合两个while循环,但遗憾的是更新和删除按钮没有正确排列。
这是我的代码我使用了两个查询,这就是为什么它有两个while循环
$sql_sel=mysql_query("SELECT students.stud_id, students.fname, students.lname, students.gender, subjects.sub_code, subjects.subject_name FROM students, enrollments, subjects WHERE students.stud_id = enrollments.stud_id and subjects.sub_code = enrollments.sub_code");
$sql_sel1=mysql_query("SElECT * FROM enrollments");
while($row=mysql_fetch_array($sql_sel)) //for the first query
{
$i++;
$color=($i%2==0)?"lightblue":"white";
?>
<tr bgcolor="<?php echo $color?>">
<td><?php echo $i;?></td>
<td><?php echo $row['stud_id'];?></td>
<td><?php echo $row['fname']." ".$row['lname'];?></td>
<td><?php echo $row['gender'];?></td>
<td><?php echo $row['sub_code'];?></td>
<td><?php echo $row['subject_name'];?></td>
<?php
while($row=mysql_fetch_array($sql_sel1)) //for the second query
{ <!-------The Update and Delete Button are not displayed properly------>
?>
<td align="center"><a href="?tag=enrollment_entry&opr=upd&rs_id=<?php echo $row['enroll_num'];?>" title="Update"><img src="picture/update.png" /></a></td>
<td align="center"><a href="?tag=view_enrollments&opr=del&rs_id=<?php echo $row['enroll_num'];?>" title="Delete"><img src="picture/delete.png" /></a></td>
<?php
}
?>
</tr>
<?php
}
?>
以下是问题的视觉情景:
所需的输出必须如下:
答案 0 :(得分:2)
在表格标题中,使用colspan='4'
作为最后一列。
另外请确保在表格中填入空列,而您无需填写信息。
修改1:
抱歉,我还没有看到问题到底是什么。这应该是工作代码:
while($row=mysql_fetch_array($sql_sel))
{
$i++;
$color=($i%2==0)?"lightblue":"white";
?>
<tr bgcolor="<?php echo $color?>">
<td><?php echo $i;?></td>
<td><?php echo $row['stud_id'];?></td>
<td><?php echo $row['fname']." ".$row['lname'];?></td>
<td><?php echo $row['gender'];?></td>
<td><?php echo $row['sub_code'];?></td>
<td><?php echo $row['subject_name'];?></td>
<!-- You were already in a while loop -->
<td align="center"><a href="?tag=enrollment_entry&opr=upd&rs_id=<?php echo $row['enroll_num'];?>" title="Update"><img src="picture/update.png" /></a></td>
<td align="center"><a href="?tag=view_enrollments&opr=del&rs_id=<?php echo $row['enroll_num'];?>" title="Delete"><img src="picture/delete.png" /></a></td>
</tr>
<?php
}
?>
正如你所看到的,你已经进入了一个循环,第二个是不必要的。
编辑2:
现在只有一个SQL查询:
<?php
// UPDATED SQL QUERY
$sql_sel = mysql_query("SELECT students.stud_id, students.fname, students.lname, students.gender, subjects.sub_code, subjects.subject_name, enrollments.enroll_num
FROM students, enrollments, subjects
WHERE students.stud_id = enrollments.stud_id and subjects.sub_code = enrollments.sub_code");
while($row = mysql_fetch_array($sql_sel)){
$i++;
$color=($i%2==0)?"lightblue":"white";
?>
<tr bgcolor="<?php echo $color?>">
<td><?php echo $i;?></td>
<td><?php echo $row['stud_id'];?></td>
<td><?php echo $row['fname']." ".$row['lname'];?></td>
<td><?php echo $row['gender'];?></td>
<td><?php echo $row['sub_code'];?></td>
<td><?php echo $row['subject_name'];?></td>
<td align="center"><a href="?tag=enrollment_entry&opr=upd&rs_id=<?php echo $row['enroll_num'];?>" title="Update"><img src="picture/update.png" /></a></td>
<td align="center"><a href="?tag=view_enrollments&opr=del&rs_id=<?php echo $row['enroll_num'];?>" title="Delete"><img src="picture/delete.png" /></a></td>
</tr>
<?php
}
?>
为什么不起作用?
你正在阅读每个学生的整个信息。然后你正在阅读注册表中的整个信息。
你开始用学生信息写第一行,在里面你告诉服务器开始写他有关注册的所有信息(甚至没有链接到那个学生的id)。
当服务器到达第二行时,可用于注册的所有信息都已耗尽。
现在您在第一个查询中链接了它们。如果您需要进一步解释,请在评论中提出。
答案 1 :(得分:1)
试试这个,
$sql= "SELECT sts.stud_id, sts.fname, sts.lname, sts.gender, sub.sub_code, sub.subject_name, ets.enroll_num
FROM students sts
JOIN enrollements ets ON(sts.stud_id = ets.stud_id)
JOIN subjects sub ON (sub.sub_code = ets.sub_code)
GROUP BY sts.stud_id, sub.sub_code";
$sql_sel=mysql_query($sql);
while($row=mysql_fetch_array($sql_sel)) //for the first query
{
$i++;
$color=($i%2==0)?"lightblue":"white";
?>
<tr bgcolor="<?php echo $color?>">
<td><?php echo $i;?></td>
<td><?php echo $row['stud_id'];?></td>
<td><?php echo $row['fname']." ".$row['lname'];?></td>
<td><?php echo $row['gender'];?></td>
<td><?php echo $row['sub_code'];?></td>
<td><?php echo $row['subject_name'];?></td>
<td align="center"><a href="?tag=enrollment_entry&opr=upd&rs_id=<?php echo $row['enroll_num'];?>" title="Update"><img src="picture/update.png" /></a></td>
<td align="center"><a href="?tag=view_enrollments&opr=del&rs_id=<?php echo $row['enroll_num'];?>" title="Delete"><img src="picture/delete.png" /></a></td>
</tr>
<?php
}
?>
我在select中添加了enroll_num列,你不需要两个查询。一个具有正确连接的查询就可以了。