簡體   English   中英

在mysql php中循環和連接輸出

[英]while loop and join output in mysql php

我有一個代碼運行數據庫,並將所有內容輸出到php頁面。

$avg = mysql_query("SELECT subject, gradeone, gradetwo, gradethree, ((gradeone + gradetwo + gradethree) / 3) as average FROM grades");


$q = mysql_query("SELECT * FROM newstudent AS n JOIN grades AS g ON n.id = g.id ORDER BY n.id") or die (mysql_error());

$last_student = null;

while ($row = mysql_fetch_assoc($q))
    {
        if ($row['id'] !== $last_student)
        {
            $last_student = $row['id'];
            echo "Student ID: ".$row['id']."<br/>";
            echo "First Name: ".$row['firstname']."<br/>";
            echo "Last Name: ".$row['lastname']."<br/>";
            echo "Email: ".$row['email']."<br/>";
            echo "<br/>";
        }
            print "<table id=reporttable>"; 

            print "<tr id=toprow> <td>subject</td> <td>gradeone</td> <td>gradetwo</td> <td>gradethree</td> <td>average</td></tr>"; 

            print   "<tr>";          

                print   " <td>";    
                    print   $row["subject"];
                print   "</td>"  ;

                print   " <td>";    
                    print   $row["gradeone"];
                print   "</td>"  ;

                print   " <td>";    
                    print   $row["gradetwo"];
                print   "</td>"  ;

                print   " <td>";    
                    print   $row["gradethree"];
                print   "</td>"  ;

                while ($r = mysql_fetch_array($avg))
                {
                    print   " <td>";    
                        print   $r['average'];
                    print   "</td>"  ;
                }

            print   " </tr>";   
            print "</table>";             

}?>

期望的結果應該是這樣的

期望的結果 以下代碼的結果很好,但只有一個小問題。

第二個while循環假設是計算平均值並輸出新行的每個記錄。 相反,它這樣做:

錯誤的結果

任何人都知道一種方法可以證明每個平均成績都與學生的每一行一致嗎?

$q = mysql_query("
    SELECT
        n.id,
        n.firstname, 
        n.lastname,
        n.email,
        g.gradeone, 
        g.gradetwo, 
        g.gradethree, 
        ((g.gradeone + g.gradetwo + g.gradethree) / 3) AS average
    FROM
        newstudent n JOIN grades g USING (id)
    ORDER BY
        n.id
") or die (mysql_error());

嘗試使用此查詢,然后在一個循環中輸出結果 - 刪除它

while ($r = mysql_fetch_array($avg))

用括號。

留下這樣的東西:

....
print "<td>$row['gradetwo']</td>";
print "<td>$row['gradethree']</td>";

print "<td>$row['average']</td>";
....

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM