【问题标题】:Php - rowspan shows all records from database at the same rowPhp - rowspan 在同一行显示数据库中的所有记录
【发布时间】:2012-11-08 19:10:17
【问题描述】:

我的 rowspan 有问题,它将数据库中的所有数据打印到一行中! 即使ID不同的人! 输出应该是课程名称和参加该课程的所有学生,把我的代码只取数据库中的第一个课程名称并将其与数据库中的所有学生姓名一起打印出来!

我的代码是

                      <h2> List of course Name with students names</h2>

<?php


        include('../connect.php');
        $id=$_SESSION['login_user'];


        $sql = "SELECT C.CourseName ,GROUP_CONCAT(s.Studntname) AS Studntname
                FROM course AS c
                INNER JOIN student AS s
                ON s.CourseID = c.CourseID"; 

        $result = mysql_query ($sql, $connection); 


          echo "<center>";

        echo "<table>";
        echo "<tr> <th>Course Name</th> <th> Student Name</th>  </tr>";

        // loop through results of database query, displaying them in the table
        while($row = mysql_fetch_array( $result )) {
                // echo out the contents of each row into a table
               echo "<tr>";

                echo '<td>' . $row['CourseName'] . '</td>';
                echo "<td rowspan='' >" .$row['Studentname'] . "</td>";


                echo "</tr>";


        }
        echo "</table>"; 
         echo "</center>";



?>

我的两张表是:

课程

CourseName var(30)
CourseID   int(7)

学生

Studentname var(30)
StudentID   int(7) 
CourseID    int(7)  

【问题讨论】:

    标签: php sql html-table


    【解决方案1】:

    问题在于您的查询。您没有使用GROUP BY,它是指定聚合数据分组依据(因此得名)的列所必需的。

        $sql = "SELECT C.CourseName ,GROUP_CONCAT(s.Studntname) AS Studntname
                FROM course AS c
                INNER JOIN student AS s ON s.CourseID = c.CourseID
                GROUP BY C.CourseName "; 
    

    当然,如果你需要列出没有人上过的课程,你必须使用LEFT JOIN而不是INNER JOIN

        $sql = "SELECT C.CourseName ,GROUP_CONCAT(s.Studntname) AS Studntname
                FROM course AS c
                LEFT JOIN student AS s ON s.CourseID = c.CourseID
                GROUP BY C.CourseName "; 
    

    至于rowspan='' 部分 - 我不明白这一点。没有意义。要么

    • 不要放在那里,用普通的&lt;td&gt;
    • 使用正确的值,如果您需要单元格跨越多行,例如&lt;td rowspan="2"&gt;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-01
      • 2019-03-16
      • 2020-10-30
      • 2017-07-29
      • 1970-01-01
      • 2015-07-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多