2013-08-16 207 views
2

我有一個問題,我似乎無法包住我的頭。PHP/MySql HTML表格分組

我有一個類似的MySQL表設置:

userid   date   rating1  rating2 

1    5/1/2013  5    5 
2    5/1/2013  4    4 
3    5/1/2013  3    3 
2    5/7/2013  5    5 
1    5/7/2013  5    5 
3    5/7/2013  2    2 

我有我的PHP代碼來查詢數據:

$con=mysqli_connect("localhost","root","password","db"); 
$result = mysqli_query($con,"SELECT userid,date,rating1,rating2 FROM db"); 

但是當我嘗試並使用輸出到表:

while($row = mysqli_fetch_array($result)) 
    { 
echo '<table>'; 
    echo '<thead>'; 
    echo '<tr>'; 
     echo '<th>UserID</th>'; 
     echo '<th>Date</th>'; 
     echo '<th>First Rating</th>'; 
     echo '<th>Second Rating</th>'; 
      echo '</tr>'; 
    echo '</thead>'; 
    echo '<tbody>'; 
    echo '<tr>'; 
     echo '<td>'.$row['userid'].'</td>'; 
     echo '<td>'.$row['date'].'</td>'; 
     echo '<td>'.$row['rating1'].'</td>'; 
     echo '<td>'.$row['rating2'].'</td>'; 
      echo '</tr>'; 
    echo '</tbody>'; 
echo '</table>'; 
    } 

它爲每個條目輸出一個唯一的表。 我需要的是1個HTML表格每用戶名 例:

UserID 1 

Date   First Rating  Second Rating 

5/1/2013  5     5 
5/7/2013  5     5 



UserID 2 

Date   First Rating  Second Rating 

5/1/2013  4     4 
5/7/2013  5     5 



UserID 3 

Date   First Rating  Second Rating 

5/1/2013  3     3 
5/7/2013  2     2 

我誠實地卡住了... 預先感謝您的幫助!

回答

1
$con=mysqli_connect("localhost","root","password","db"); 
$result = mysqli_query($con,"SELECT userid,date,rating1,rating2 FROM db ORDER BY userid"); 
$id = -1; 

while($row = mysqli_fetch_array($result)) { 
    if ($id != -1 && $id != $row['userid']) { 
     echo '</tbody>'; 
     echo '</table>'; 
    } 

    if ($id != $row['userid']) { 
     echo '<table>'; 
     echo '<thead>'; 
     echo '<tr>'; 
     echo '<th>UserID</th>'; 
     echo '<th>Date</th>'; 
     echo '<th>First Rating</th>'; 
     echo '<th>Second Rating</th>'; 
     echo '</tr>'; 
     echo '</thead>'; 
     echo '<tbody>'; 

     $id = $row['userid']; 
    } 

    echo '<tr>'; 
    echo '<td>'.$row['userid'].'</td>'; 
    echo '<td>'.$row['date'].'</td>'; 
    echo '<td>'.$row['rating1'].'</td>'; 
    echo '<td>'.$row['rating2'].'</td>'; 
    echo '</tr>'; 
} 

echo '</tbody>'; 
echo '</table>'; 
+0

不管第一個ID是否有更多的條目,這個循環在第一次迭代時是否會開始和結束表格? – stephen

+0

好點。固定。 – weenoid

+0

當我使用你的代碼,我仍然得到每個獨特的表(我不得不作出1更改,雖然,增加了;行$ id!= $ row ['userid']; 有沒有辦法合併爲一個表,每個唯一的用戶ID? 感謝您的時間/幫助! –

0

這樣的事情?

echo '<table>'; 
echo '<thead>'; 
echo '<tr>'; 
    echo '<th>UserID</th>'; 
    echo '<th>Date</th>'; 
    echo '<th>First Rating</th>'; 
    echo '<th>Second Rating</th>'; 
echo '</tr>'; 
echo '</thead>'; 
echo '<tbody>'; 

while($row = mysqli_fetch_array($result)) 
{ 
    echo '<tr>'; 
     echo '<td>'.$row['userid'].'</td>'; 
     echo '<td>'.$row['date'].'</td>'; 
     echo '<td>'.$row['rating1'].'</td>'; 
     echo '<td>'.$row['rating2'].'</td>'; 
    echo '</tr>'; 
} 

echo '</tbody>'; 
echo '</table>'; 
+0

這是行不通的。將爲所有ID提供單個表格。 –

+0

我錯誤閱讀......認爲這是所期望的。 – BWS

0

你需要的東西,如:

echo '<table>'; 
echo '<thead>'; 
echo '<tr>'; 
    echo '<th>UserID</th>'; 
    echo '<th>Date</th>'; 
    echo '<th>First Rating</th>'; 
    echo '<th>Second Rating</th>'; 
echo '</tr>'; 
echo '</thead>'; 
echo '<tbody>'; 
$old_id = 0; 
while($row = mysqli_fetch_array($result)) 
{ 
    if($old_id != $row['userid']) { 
      echo "<tr><td colspan=3>".$row['userid']."</td>"; 
      $old_id = $row['userid']; 
    } else { 
     echo "<tr>"; 
     echo '<td>'.$row['userid'].'</td>'; 
     echo '<td>'.$row['date'].'</td>'; 
     echo '<td>'.$row['rating1'].'</td>'; 
     echo '<td>'.$row['rating2'].'</td>'; 
    } 
    echo '</tr>'; 
} 

echo '</tbody>'; 
echo '</table>';