如何使用PHP和Google Charts构建折线图?

时间:2013-12-10 19:21:25

标签: php google-visualization unix-timestamp

我想创建一个每小时订单的折线图,这样我就可以很容易地看到它们的放置时间。但我正在努力将所有数据都放到图表中。我想使用Google Charts,因为我对它有一些熟悉并尽可能避免使用第三方函数/类。

<script type="text/javascript">
// some more code here
function drawChart() {
   var data = google.visualization.arrayToDataTable([
     ['Time', 'Orders'],
     ['12:00',  $orders12],
     ['13:00',  $orders13],
     ['14:00',  $orders14],
     ['15:00',  $orders15],
     // etc for every hour in the day
   ]);
// some more code here
</script>




while ($objectTime = $objDB->getObject($result_time)) {
/*  PSUEDO CODE

if ($objectTime->entryDate) == [placed between 12:00 - 13:00]
    $orders12++;

if ($objectTime->entryDate) == [placed between 13:00 - 14:00]
    $orders13++;    
*/
}

正如您所看到的,我不知道如何正确创建正确的变量来构建图表。我应该每小时使用一个变量(就像我现在一样),如果订单与那个时间匹配,我会增加吗?还是有更聪明/更好的方式?

2 个答案:

答案 0 :(得分:0)

你可以做的最好的事情就是首先以合适的方式取出东西。例如,使用MySQL时

SELECT count(id) FROM `objects` WHERE timestamp < 12937 and timestamp > 12980

或使用GROUP BY进一步减少查询次数

SELECT count(id) FROM `objects` GROUP BY (timestampHour)

除此之外,如果你还需要整个数据集,为每个解决方案存储一个变量对我来说似乎没问题,尽管使用Arrays更简洁,更容易输出( foreach 而不是 echo '每个变量)

答案 1 :(得分:0)

如果将数据放入数组数组中,如下所示:

$myData = array(array('Time', 'Orders'), array('12:00', 5), array('13:00', 10), array('14:00', 16));

然后你可以输出到这样的javascript:

var data = google.visualization.arrayToDataTable(<?php echo json_encode($myData, JSON_NUMERIC_CHECK); ?>);

我建议遵循Robin Heller的建议,使用通过SQL提供的工具为您完成繁重的工作。