【问题标题】:PHP/MySQL Array to table with Aggregate calculationsPHP/MySQL 数组到带有聚合计算的表
【发布时间】:2012-06-12 03:59:05
【问题描述】:

我需要生成一个 PHP 页面,该页面显示存储在数组中的所有详细信息(来自 MySQL 请求),以显示每个类似行项目的计数/摘要的方式。

以下是从 SQL 查询中收集的示例数据集(已按工作组、ProductCode 进行排序):

+----+-------------+-------------+-----------+-----------+
| ID | ProductCode | Description | Workgroup |   Status  |
+----+-------------+-------------+-----------+-----------+
|  2 |     A123    |    Coke     |  Finance  |  Ordered  |
|  4 |     A123    |    Coke     |  Finance  |  Rejected |
|  1 |     A123    |    Coke     |  Finance  |  Rejected |
|  6 |     B111    |    Pepsi    |  Finance  |  Ordered  |
|  5 |     B111    |    Pepsi    |  Finance  |  Rejected |
|  8 |     B111    |    Pepsi    |  Finance  |  Rejected |
| 10 |     B112    |    Fanta    |  Finance  |  Ordered  |
| 42 |     A123    |    Coke     | Management|  Ordered  |
| 16 |     A123    |    Coke     | Management|  Ordered  |
| 11 |     B112    |    Fanta    | Management|  Rejected |
+----+-------------+-------------+-----------+-----------+

这些详细信息已存储在 PHP 数组中,如下所示:

    Array
    (
        [0] => Array
            (
                [ID] => 2
                [ProductCode] => A123
                [Description] => Coke
                [Workgroup] => Finance
                [Status] => Ordered
            )
        [1] => Array
            (
                [ID] => 4
                [ProductCode] => A123
                [Description] => Coke
                [Workgroup] => Finance
                [Status] => Rejected
            )
             ...etc
)

我需要的是在由 WorkGroup 分隔的多个表格中吐出数据,每个产品有一个汇总行,下面列出每个单独的行项目(它不需要是一个 html 表格,只是一些 HTML 结构能够表示行项目)

从我展示的 10 个示例条目中,它需要输出以下内容:

+--------------------------------------------------------+
| FINANCE TEAM                                           |
+----+-------------+-------------+-----------+-----------+
| Coke      Total: 3     Ordered: 1     Rejected: 2      |
+----+-------------+-------------+-----------+-----------+
|  2 |     A123    |    Coke     |  Finance  |  Ordered  |
|  4 |     A123    |    Coke     |  Finance  |  Rejected |
|  1 |     A123    |    Coke     |  Finance  |  Rejected |
+----+-------------+-------------+-----------+-----------+
| Pepsi    Total: 3     Ordered: 1      Rejected: 2      |
+----+-------------+-------------+-----------+-----------+
|  6 |     B111    |    Pepsi    |  Finance  |  Ordered  |
|  5 |     B111    |    Pepsi    |  Finance  |  Rejected |
|  8 |     B111    |    Pepsi    |  Finance  |  Rejected |
+----+-------------+-------------+-----------+-----------+
| Fanta    Total: 1     Ordered: 1      Rejected: 0      |
+----+-------------+-------------+-----------+-----------+
| 10 |     B112    |    Fanta    |  Finance  |  Ordered  |
+----+-------------+-------------+-----------+-----------+

+--------------------------------------------------------+
| MANAGEMENT TEAM                                        |
+----+-------------+-------------+-----------+-----------+
| Coke      Total: 2     Ordered: 2     Rejected: 0      |
+----+-------------+-------------+-----------+-----------+
| 42 |     A123    |    Coke     | Management|  Ordered  |
| 16 |     A123    |    Coke     | Management|  Ordered  |
+----+-------------+-------------+-----------+-----------+
| Fanta      Total: 1    Ordered: 0     Rejected: 1      |
+----+-------------+-------------+-----------+-----------+
| 11 |     B112    |    Fanta    | Management|  Rejected |
+----+-------------+-------------+-----------+-----------+

如果我的要求不够清楚,我可以进一步详细说明。

任何帮助将不胜感激。

提前致谢。

【问题讨论】:

  • 当您以“我有...并且我需要...”开始发帖时,您可能应该评估您是否编写了任何代码来尝试解决您的问题。
  • 抱歉,如果您认为我过于前卫。我试图解决我的问题,但没有一个值得发布,因为它完全是垃圾。正如我所说:“任何帮助都将不胜感激。”
  • 完全和彻底的垃圾比没有更有用。如果你有什么问题,我们可以指出你哪里出了问题或者你可以在哪里做得更好。

标签: php mysql arrays foreach while-loop


【解决方案1】:

php 数组很容易转换成树状结构。您听起来好像您知道如何编程,所以我不会发送tehfullcodez,因为我认为您可以处理一些嵌套循环以在将其放入更方便的格式后自己生成最终的 html。

$tree = array();
foreach ($arr as $row) {
    extract($row);
    $tree[$Workgroup][$Description][] = $row;
}
print_r($tree);

【讨论】:

  • 感谢您的回复,我可以看到将其转换为“有组织的”树状结构的有用性。我仍然很难概念化如何查看数组,记录每个工作组每个特定项目的计数,然后将其与摘要一起吐出,然后是详细的项目细分。有没有朝着正确方向进一步推进?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-30
  • 1970-01-01
  • 2015-07-07
  • 1970-01-01
相关资源
最近更新 更多