2014-08-28 42 views
1

我想創建這樣http://jsfiddle.net/9mmrbjt7/1/PHP圖圖來顯示跳過入門

我創建了一個腳本,將數據添加到圖表的圖表。日期和值存儲在分貝,它工作得很好。 php腳本計算日期的數量並將其用作值並將其分配給日期。

問題是如果有人錯過某一天,它會跳過我理解的價值。 那麼如何將零值分配給跳過的一天呢?

2014-07-23 
2014-07-23 = 2, 

2014-07-24 -> wasn't submitted so the 0 should be added to the graph with the date. 

2014-07-25 
2014-07-25 
2014-07-25= 3, 

php腳本

$user_curr_id = $_SESSION['user_id']; 
$sql = mysqli_query($con,"SELECT * FROM rosary WHERE user_ids = $user_curr_id ORDER BY datum ASC"); 

$array1 = array(); 
while($row = mysqli_fetch_array($sql)){ 
$array1[] = '"' . $row['datum'] . '"'; 
} 

$tags = implode(', ', array_unique(array_map('trim',explode(',',implode(',',$array1))))); 

$sql = mysqli_query($con,"SELECT datum, COUNT(datum) cnt 
     FROM rosary 
     WHERE user_ids = $user_curr_id 
     GROUP BY datum;"); 

$result = array(); 

      while ($row = mysqli_fetch_array($sql)) { 
       $result[] = $row['cnt'];    // add the content of field cnt 
      } 

在JS腳本

labels : ["Start",<?php echo $tags; ?>] -> list the dates from db 

data : [0,<?php echo implode(',', $result); ?>]-> list values from db 
+1

數據庫無法從無到有。您需要一個臨時表,列出您可以加入的範圍內的每一天,以便您可以獲得零計數,或者在檢索查詢結果並填寫後,您必須在php中掃描數據集在那裏缺少天。 – 2014-08-28 18:16:04

+0

是的,我喜歡做第二個選項,但不知道如何我可以掃描日期,如果沒有分配0 – Grasper 2014-08-28 18:17:37

+0

如何在PHP中從$ min_date循環到$ max_date,如果未在$ result數組中設置日期,只需添加它的值爲0? – 2014-08-28 19:12:47

回答

2

PHP:

在JS腳本

$sql = mysqli_query($con,"SELECT datum, COUNT(datum) as cnt 
     FROM rosary 
     GROUP BY datum 
     ORDER BY datum ASC;"); 

$result = array(); 

$start = null; 
$end = null; 
while ($row = mysqli_fetch_array($sql)) { 
    $result['"'.$row['datum'].'"'] = $row['cnt']; 
    if(is_null($start)) $start = $row['datum']; 
    $end = $row['datum'];  
} 

$res_array = array(); 
if(!is_null($start)){ 
    $i = strtotime($start); 
    while($i <= strtotime($end)){ 
     $res_array['"'.date('Y-m-d',$i).'"'] = 0; 
     $i = strtotime("+1 day",$i); 
    } 
} 

foreach($result as $date => $val){ 
    $res_array[$date] = $val; 
} 

labels : ["Start",<?php echo implode(',',array_keys($res_array)) ?>], 
data : [0,<?php echo implode(',', array_values($res_array)); ?>], 
+0

這個作品令人驚歎,非常感謝! – Grasper 2014-09-02 12:47:29