2010-02-07 3 views
0

PHP와 MySQL을 사용하여 그룹화 된/계층화 된 보고서를 생성하려고합니다.PHP와 MySQL을 사용하는 그룹화 된/계층화 된 보고서

tbl_items는 다음 필드를 포함한다 : (1) 사용자 이름 및 (2)에 나열된 복수의 항목을 가질 수

단일 사용자를

ITEMNAME.

는 I 데이터는 각각의 사용자에 의해 계층화되어있는 출력을 생성 할. 예를 들어

* 자명 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

+0

완벽하게 작동하면 내 대답 옆에있는 녹색 체크 표시를 클릭하여 올바른 것으로 표시 할 수 있습니다. –

+0

두 번째 그룹화 수준을 어떻게 추가 하시겠습니까? 여성 사용자와 남성 사용자를 가정 해 보겠습니다. (여성 -> 사용자 이름 -> 아이템/남성 -> 사용자 이름 -> 아이템) – Michael

관련 문제