2013-12-10 344 views
0

我想創建每小時訂單的折線圖,這樣我可以很容易地看到它們的放置時間。但我正在認真努力地獲取圖表中的所有數據。我想使用谷歌圖表,因爲我有它的一些家庭,並儘可能避免第三方函數/類。如何使用PHP和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

爲什麼不回覆數據['12:00',<?php echo $ orders12]?>, – Afsar

回答

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); ?>); 

我建議以下羅賓·海勒的建議使用可用的工具通過SQL做爲你舉重。

0

你可以做的最好的事情就是以合適的方式把東西放在第一位。例如,當使用MySQL的

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

或使用GROUP BY,以進一步減少查詢

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

除此之外的數量,如果需要整個數據集反正,存儲變量爲每一個解決方案似乎還好我,雖然使用數組的是更清潔和更容易輸出(的foreach代替呼應「荷蘭國際集團每一個變量)

相關問題