我尝试了很多方法让这张桌子打印得尽可能好,但我失败了。 我知道这很简单,所以我希望你帮助我 这是我的代码:
<?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)
答案 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的名称将位于Name
和Student name
列之下。
这是你所期待的吗?
答案 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
我认为这可能会有所帮助。