[英]Initialize all missing data points to 0 in Google Visualization chart
我試圖每小時從MySQL數據庫繪制一個給定ID的記錄數。
我遇到的問題是,如果給定小時內給定ID有0條記錄,則不會為該表生成數據點。 如果小時之間沒有計數,這將導致表格在兩個計數之間進行插值。
例如:下午1點有4條記錄,下午2點有0條記錄,下午3點有2條記錄。 該表將在4和2之間畫一條直線,因此在表上會顯示在下午2點有3條記錄,而實際上沒有。
我確定原因是我沒有為不存在的記錄提供null或0值,但是我不確定如何去做。
桌子上的一些信息:
id int AI
TagNumber int
TimeStamp timestamp
BatteryStatus varchar
Location int
這是我用來每小時計算給定TagNumber實例數量的php代碼。
$result = $mysqli->('SELECT hour(TimeStamp) as Hour, count(*) as Count FROM table WHERE Location = 1 AND TagNumber = 12345678 GROUP BY Hour');
// The values here are hard coded for testing purposes.
$rows = array();
$table = array();
$table['cols'] = array(
array('label' => 'Hour', 'type' => 'number'),
array('label' => 'Count', 'type' => 'number')
);
while($row = mysqli_fetch_assoc($result)) {
$temp = array();
$temp[] = array('v' => (int) $row['Hour']);
$temp[] = array('v' => (int) $row['Count']);
$rows[] = array('c' => $temp);
}
$table['rows'] = $rows;
$jsonTable = json_encode($table);
然后,我將json編碼表傳遞給Google可視化api。
我相信我需要做的是每小時設置1到24之間,而mysql查詢返回的記錄沒有設置為0,我只是不知道該如何實現。
我嘗試初始化從0到24的Hours數組,並使用0作為'Count'值,但是我肯定做錯了,php拋出錯誤。
12點的讀數應為0,但取而代之的是11和13之間。
這是我的帶有值的圖表:
在這種情況下,我需要1-> 9、12和15-> 24小時顯示0。
嘗試這個:
$result = $mysqli->('SELECT hour(TimeStamp) as Hour, count(*) as Count FROM table WHERE Location = 1 AND TagNumber = 12345678 GROUP BY Hour');
// The values here are hard coded for testing purposes.
$rows = array();
$table = array();
$table['cols'] = array(
array('label' => 'Hour', 'type' => 'number'),
array('label' => 'Count', 'type' => 'number')
);
$hoursNotAvail = array(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23);
while($row = mysqli_fetch_assoc($result)) {
$temp = array();
$temp[] = array('v' => (int) $row['Hour']);
$temp[] = array('v' => (int) $row['Count']);
$rows[] = array('c' => $temp);
$hoursNotAvail[(int) $row['Hour']] = -1;
}
foreach($hoursNotAvail as $k => $v){
if($v != -1){
$temp = array();
$temp[] = array('v' => $k);
$temp[] = array('v' => 0);
$rows[] = array('c' => $temp);
}
}
$table['rows'] = $rows;
$jsonTable = json_encode($table);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.