2015-11-25 190 views
0

我目前在嘗試爲我想要的結果創建一個循環時遇到了問題。PHP,在SQL中循環查詢結果

我目前正在創建一個存儲不同學生(假學生)的大量數據的學生記錄卡。

我創建了一個查詢返回的相關數據,我需要(見圖片之一,phpMyAdmin的)

SELECT mods.mid, mtitle, credits, enrl.ayr 
FROM stud, smod, mods, enrl 
WHERE stud.sid = '154279' AND stud.sid = smod.sid 
AND smod.mid = mods.mid AND stud.sid = enrl.sid 
ORDER BY `enrl`.`ayr` DESC 

你可以通過結果看,有屬性: 中旬
mtitle
學分
ayr

我已經按降序排列了ayr。我試圖做一個循環,將通過這個查詢返回並打印出每一行,直到今年的結束。幾乎將同一年的所有行分組,例如'2001/02'放入一個子表中,然後我可以命名和打印。

正如您可以通過學生記錄頁面的第二張圖片所看到的那樣,我需要能夠打印一年的所有記錄,然後爲下一個現有年份創建一個新標題並打印所有包含該行的記錄。

{編輯} PHP代碼:

$query = "SELECT mods.mid, mtitle, credits, enrl.ayr 
      FROM stud, smod, mods, enrl 
      WHERE stud.sid = '154279' AND stud.sid = smod.sid AND smod.mid = mods.mid AND stud.sid = enrl.sid 
      ORDER BY enrl.ayr DESC 
     "; 


$scap = ''; 
$curYear = $row['ayr']; 
if($result = $link->query($query)) { 
     while ($row = $result->fetch_assoc() && $row['ayr'] == $curYear) { 
      $scap .= "<table id=\"test\" style=\"width:100%\"> 
         <tr> 
          <td> " . $row['mid'] . " </td> <td> " . $row['mtitle'] . "</td> <td> " . $row['credits'] . " <td> " . $row['ayr'] . "</td> 
         </tr> 
       </table>"; 
     }$result->free(); 
    } 

在此先感謝。

Picture 1 Picture 2

+0

更改查詢 – Drew

+0

我不知道,太什麼? – jonlovesmeth

+1

你有任何代碼張貼? – DataHerder

回答

1

比方說,你承諾一個查詢最多爲整個頁面。就像我在評論中所說

我會有一個變量,稱之爲$ curYear。以一些垃圾郵件 字符串開始。在你的循環,如果CUR年的事情比 $ curYear不同,在你的輸出創建一個新的細分市場,但無論更新 $ curYear變量

這並不意味着與您現有的源代碼干擾(即多)。它只是一個警戒提醒你一年的變化(年/任期)。

所以它開始爲一些垃圾值,如「797fsdf *」

現在你而內,記住,你把所有這些年來從結果所有年份的設置來英寸

做什麼,我說在粉紅色框正上方比較變量$curYear

$row['ayr'] 

當這兩個值是不同的,時間做任何你想要的HTML處理(創建一個新的HTML表格,一個新的div , 誰在乎)。我們稱之爲分離事物。

無論如何,輸出行後,請確保您已將$curYear設置爲$row['ayr']。爲什麼這很重要?因爲你想知道下一個循環是否需要執行分離的事情。

棘手的部分是,如果你正在做的HTML表格,你必須收出上表中(去年同期),如果你是不是在你的第一年

+0

Hi @drew你會檢查我更新的PHP代碼,特別是while循環部分。我已經添加了一個額外的&&條件,我認爲你想告訴我什麼? – jonlovesmeth

+0

不是。你想輸出到HTML表格。每年一張桌子? – Drew

+0

是的,這正是我想要實現:) – jonlovesmeth