2012-11-07 87 views
0

我已經嘗試了很多方法來獲得該表的打印效果,但是我失敗了。 我知道這很簡單,所以我希望你能幫助我。
這裏是我的代碼:從行中的表中獲取數據庫中的記錄

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

而且,是兩個表之間的連接查詢正確與否?

兩個表是:
課程(課程名稱 - 課程ID)
學生(學生名字 - 課程ID)

+1

您能否告訴我您需要的確切輸出 – 2012-11-07 12:52:11

+0

「名稱」列是指什麼?您所描述的「學生」表不包含此類字段。以及「課程」表。 – Exander

+0

名稱=課程名稱! ..輸出顯示課程名稱和學生姓名(所有學生姓名在本課程中排在一行) – user1806136

回答

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> "; 
+0

rowspan完美地工作!但它打印出所有的學生在一行,即使有不同的課程ID! – user1806136

0

這條線:

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

你不當訪問數組元素。 Studentname應該有它周圍的單引號像這樣:

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"; 
0

請使用以下格式

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

感謝

0

問題出在您的rowspan屬性 - 您需要爲其提供需要跨越的確切行數。無論如何,我認爲這是您要使用的collspan屬性,例如

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

這意味着它將通過2列跨越,從而stundet的名稱將是NameStudent name列下兩者。

這是你期待的嗎?

此外,我強烈建議不要使用mysql_函數,但要學會如何使用mysqli或至少PDO

+0

它只打印出一行,數據庫中的第一個課程名稱和同一行數據庫中的所有學生名稱! !即使是不同的課程ID! – user1806136

0

我,你想顯示一個逗號分隔的所有學生的名單下的印象是參加每個課程,每個單獨的課程名稱。在這種情況下,您可以將SQL查詢更改爲如下所示:

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

是的,這就是我的意思,我已經改變了代碼給你什麼,但它仍然給我一個錯誤說:mysql_fetch_array()期望參數1是資源,布爾給定 – user1806136

+0

這意味着有一個查詢錯誤。你可以發佈你的CREATE TABLE查詢這兩個表嗎?我對數據庫結構的假設在某些方面可能不正確 – Exander

+0

如果您至少可以在查詢後張貼由mysql_error()返回的字符串,那將會很棒。 – Exander

相關問題