Php-rowspan在同一行显示数据库中的所有记录
rowspan有问题,它将数据库中的所有数据打印到一行中! 即使是不同id的那个! 输出应该是课程名称和所有参加该课程的学生,将我的代码仅用于数据库中的第一个课程名称,并将其与数据库中的所有学生名称一起打印出来 我的代码是Php-rowspan在同一行显示数据库中的所有记录,php,sql,html-table,Php,Sql,Html Table,rowspan有问题,它将数据库中的所有数据打印到一行中! 即使是不同id的那个! 输出应该是课程名称和所有参加该课程的学生,将我的代码仅用于数据库中的第一个课程名称,并将其与数据库中的所有学生名称一起打印出来 我的代码是 <h2> List of course Name with students names</h2> <?php include('../connect.php');
<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>";
?>
学生
Studentname var(30)
StudentID int(7)
CourseID int(7)
问题在于您的查询。您没有使用
分组依据
,这是指定聚合数据分组依据的列所必需的(因此命名)
当然,如果您需要列出没有人参加的课程,您必须使用左连接
,而不是内部连接
:
$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=''
部分,我不明白这一点。没有道理。或者
- 不要把它放在那里,用普通的
- 如果需要单元格跨越多行,请使用正确的值,如
$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 ";
$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 ";