1

我正在尝试从我的数据库(php/mysql)中获取一些行,并使用 javascript 对象将它们呈现在谷歌图表中:

    var data = google.visualization.arrayToDataTable([
      ['Month', 'Sales Price 1', 'Sales Price 2'],
      ['2013-05',  555, 651 ],
      ['2013-04',  1170, 321],
    ]);

我只从数据库中提取一次(SELECT PRICE1,PRICE2,DATE FROM transactions)。
无法弄清楚如何遍历行以组织和打印它们以供 google javascript 对象使用。

我意识到我必须做一些 php 循环并计算每个月的变量,然后再将结果回显到数组中,但我想不出一种合适的方法来比较月份..
有什么想法吗?

4

2 回答 2

2

您可以简单地ORDER BY在查询中使用日期(您显然知道这一点)。要为 JS 创建数组,我会使用 JSON。

$values = array(array('MOnth', 'Sales Price 1', 'Sales Price 2'));
while ($row = $result->fetch()) {
    $values[] = array_values($row);
}
$for_javascript = json_encode($values);
于 2013-06-02T21:08:33.050 回答
2

使用包含交易日期的 DATE 字段,您可以轻松获取按月份分组的价格字段的总和:

SELECT
  YEAR(date) AS year,
  MONTH(date) AS month,
  SUM(price1) AS total1,
  SUM(price2) AS total2
FROM transactions
GROUP BY YEAR(date), MONTH(date)
ORDER BY date

这很可能比 PHP 解决方案快得多,特别是如果该表中存储了大量事务。

演示:http ://sqlfiddle.com/#!2/feddd/1

于 2013-06-02T21:08:58.333 回答