无法用PHP连接html中的行(逻辑错误显示)

时间:2015-09-24 08:59:54

标签: php html html5

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
        }
        ?>

以下是问题的视觉情景:

enter image description here

所需的输出必须如下:

https://www.dropbox.com/s/5ssb4gksph2rvua/htmlerror.PNG?dl=0

2 个答案:

答案 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列,你不需要两个查询。一个具有正确连接的查询就可以了。