我想创建一个每小时订单的折线图,这样我就可以很容易地看到它们的放置时间。但我正在努力将所有数据都放到图表中。我想使用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++;
*/
}
正如您所看到的,我不知道如何正确创建正确的变量来构建图表。我应该每小时使用一个变量(就像我现在一样),如果订单与那个时间匹配,我会增加吗?还是有更聪明/更好的方式?
答案 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提供的工具为您完成繁重的工作。