我正在尝试使用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>


请帮忙!

最佳答案

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'];
    }
}


这首先创建一个按用户名排序的数组。这意味着每个用户在数组中都有一个元素,该元素包含已分配给该用户的项目的数组。

然后,我们遍历每个用户并打印出所有项目。

关于php - 使用PHP和MySQL的分组/分层报表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2215844/

10-13 08:56