2010-02-07 51 views
0

我正在嘗試使用PHP和MySQL生成分組/分層報告。使用PHP和MySQL進行分組/分層報告

tbl_items具有下列字段:(1)用戶名和(2)ITEMNAME

單個用戶可以具有列出多個項目。

我想生成一個輸出,其中的數據按每個用戶分層。例如:

*用戶名#1
-ItemName 1
-ItemName 2
*用戶名#2
-ItemName 3
*用戶名#3
-ItemName 4
-ItemName 5

我一直在玩代碼,試圖在循環內部放置一個循環......但無法弄清楚如何去做!這是我到目前爲止:

<? 
$sql="SELECT * FROM $tbl_items"; 
$result=mysql_query($sql); 
?> 

<html> 
<body> 

<? php while($rows=mysql_fetch_array($result)){ ?> 

Item: <? echo $rows['ItemName']; ?> (<? echo $rows['UserName']; ?>) 

<?php } mysql_close(); ?> 

</body> 
</html> 

請幫忙!

回答

1
while($row=mysql_fetch_array($result)) 
{ 
    $itemsByUser[$row['UserName']][] = $row; 
} 

foreach($itemsByUser as $user => $items) 
{ 
    echo $user . "<br>"; 
    foreach($items as $array) 
    { 
     echo "-" . $array['ItemName']; 
    } 
} 

這首先創建一個按用戶名順序排列的數組。這意味着每個用戶在數組中都有一個元素,其中包含已分配給用戶的項目數組。

然後,我們檢查每個用戶並打印出所有項目。

+0

謝謝,這工作完美! – Michael 2010-02-07 04:12:52

+0

如果工作完美,您可能需要單擊我答案旁邊的綠色複選標記以將其標記爲正確。 – 2010-02-07 04:18:33

+0

你將如何去添加第二個分組級別?假設女性用戶和男性用戶? (女性 - >用戶名 - >項目/男性 - >用戶名 - >項目) – Michael 2010-02-08 22:29:41