使用rowspan从表中的数据库中获取记录

时间:2012-11-07 12:48:42

标签: php database html-table

我尝试了很多方法让这张桌子打印得尽可能好,但我失败了。 我知道这很简单,所以我希望你帮助我 这是我的代码:

<?php
    include('../connect.php');
    $id=$_SESSION['login_user'];
    $sql = "Select CourseName , Studentname from course p natural join student t"; 
    $rs_result = mysql_query ($sql, $connection); 

    echo "<center>";
    echo "<table>";
    echo "<tr> <th>Course Name</th> <th> Students Name</th>  </tr>";

    // loop through results of database query, displaying them in the table
    while($row = mysql_fetch_array( $rs_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>";
?>

我想成为像这样的东西

Course   |  Name   |   Student name  |
Math101  |  john, Mike               |
...

另外,两个表之间的JOIN查询是否正确?

这两个表是:
课程(课程名称 - 课程ID)
学生(学生姓名 - 课程ID)

6 个答案:

答案 0 :(得分:2)

尝试此查询

$sql ="SELECT cor.CourseName,GROUP_CONCAT(stu.StudentName) AS StudentName
        FROM course AS cor
        LEFT JOIN student AS stu
           ON stu.CourseId = cor.CourseId";

然后更改下面的一行

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

答案 1 :(得分:0)

这一行:

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

您正在不正确地访问数组元素。 学生名称应该有单引号,如:

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

此外,在您的查询中,这可能会更好:

$sql = "SELECT c.CourseName, s.StudentName
        FROM course AS c
        INNER JOIN student AS s
           ON s.CourseId = c.CourseId";

答案 2 :(得分:0)

请使用以下格式

SELECT CourseName , Studentname 
    FROM course
    INNER JOIN student
    ON course.id = student.id

由于

答案 3 :(得分:0)

问题在于您的rowspan属性 - 您需要为其提供要跨越的确切行数。无论如何,我认为这是你想要使用的collspan属性,例如。

echo "<td collspan='2'> {$row['Studentname']} </td> ";

这意味着它将跨越2列,因此stundet的名称将位于NameStudent name列之下。

这是你所期待的吗?

我强烈建议您不要使用mysql_功能,但要了解如何使用mysqli或至少PDO

答案 4 :(得分:0)

我的印象是,您希望为每个单独的CourseName显示以逗号分隔的所有参加每门课程的学生的姓名列表。在这种情况下,您可以将SQL查询更改为以下内容:

SELECT CourseName, GROUP_CONCAT(Studentname SEPARATOR ', ') as names
FROM Course p NATURAL JOIN Student t
GROUP BY CourseName;

答案 5 :(得分:0)

您好请看一下这个答案。 Dynamic rowspan while fetching records from database

我认为这可能会有所帮助。