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

また、2 つのテーブル間の JOIN クエリは正しいですか?

2 つのテーブルは次のとおりです。
Course ( Course name - Course id )
Student ( Student name - Course id )

4

6 に答える 6

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> ";
于 2012-11-07T13:08:31.793 に答える
0

各 CourseName ごとに、各コースに参加するすべての学生の名前のコンマ区切りリストを表示したかったという印象を受けました。この場合、SQL クエリを次のように変更できます。

SELECT CourseName, GROUP_CONCAT(Studentname SEPARATOR ', ') as names
FROM Course p NATURAL JOIN Student t
GROUP BY CourseName;
于 2012-11-07T13:18:33.170 に答える
0

こんにちは、この回答をご覧ください。データベースからレコードをフェッチする際の動的な行スパン

参考になるかと思います。

于 2015-06-06T15:29:14.297 に答える
0

以下のフォーマットを使用してください

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

ありがとう

于 2012-11-07T13:00:02.360 に答える
0

問題はrowspan属性にあります-スパンする正確な行数を指定する必要があります。collspanとにかく使いたい属性だと思いますので、例えば

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

これは、2 つの列にまたがることを意味するため、stundet の名前は と の両方の列の下に表示さNameStudent nameます。

これはあなたが期待していたものですか?

また、関数を使用するのではなく、mysqliまたは少なくともPDOmysql_の使用方法を学ぶことを強くお勧めします。

于 2012-11-07T13:00:18.520 に答える
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";
于 2012-11-07T12:56:04.440 に答える