2016-11-10 128 views
1

我想從mysql數據庫獲取數據並使用canvas.js方式繪製一個線圖.....我只是想知道如何傳遞值從數據庫中提取到dataPoints:x和y值....我; e..X將包含時間和Y包含溫度。我試圖繪製時間vs溫度圖在這裏..使用mysql數據庫使用Canvas.js的PHP和Html圖表

我收到了這兩個使用此代碼在我的數據庫中的數據值。

$sql1 = "SELECT Time FROM sdata ORDER BY ID DESC LIMIT 10;"; 
$response1 = mysqli_query($connect, $sql1) or die(mysqli_error($connect)); 
while($row1 = mysqli_fetch_all($response1)){ 
    $r1[]= $row1; 
} 

$sql2 = "SELECT Temperature FROM sdata ORDER BY ID DESC LIMIT 10;"; 
$response2 = mysqli_query($connect, $sql2) or die(mysqli_error($connect)); 
while($row2 = mysqli_fetch_all($response2)){ 
    $r2[]= $row2; 
} 

這裏當我給回聲,看到了R1和R2的值,我能看到的數據庫值....

是露苗頭從我的數據庫日期時間值:

[ [[「2016/8/30 9:37」],[「2016/8/30 9:33」],[「2016/8/30 9:32」],[「2016/8/30 9:32 「],[」2016/8/30 9:32「],[」2016/8/30 9:32「],[」2016/8/30 9:32「],[」2016/8/30 9 :[「2016/8/30 9:31」],[「2016/8/30 9:31」]]]

- 這些是我的數據庫中的溫度值:

[[[25],[25],[28.91],[28.82],[28.84],[28.91],[29.05],[29.05],[28.92],[29.11]]]

現在我想通過這些varaibles到數據點:x和y如下圖所示代碼:

<script type="text/javascript"> 
window.onload = function() { 

    var chart = new CanvasJS.Chart("chartContainer", { 
     title: { 
      text: "Line Chart" 
     }, 
     axisX: { 

      interval: 5, 
      title: "Time", 
      valueFormatString: "hh:mm TT", 

     }, 
     axisY: { 

      interval: 20, 
      title: "Temp" 

     }, 
     data: [{ 
      type: "line", 
      dataPoints: ???????????(HOW DO I PASS THE r1 and r2 values here for x and y respectively so that it give me a line chart is my question) 

     }] 
    }); 
    chart.render(); 

} 
</script> 

PLZ幫我在這....

回答

4

您可以從this page下載CanvasJS樣品,包括渲染圖表來自mySQL數據庫的數據。

+0

@Vishwas代碼....我是通過去already..but他們在給定的數據點直接值,如:數據點: \t \t \t \t {X:10 Y:45 }, \t \t \t \t \t] ....但我想給從數據庫表中提取的值..如:dataPoints:「從sdata中選擇時間」; ...這樣的事情......這裏的靜態值在例如..我想給x和y的數據庫值.... –

+0

@ manu-manohara,我剛剛下載,檢查和發現dataPoints從數據庫中讀取,而不是像[{x:10,y:45} ,] .... dataPoints行看起來像'dataPoints:<?php echo json_encode($ dataPoints,JSON_NUMERIC_CHECK); ?>'其中$ dataPoints是從'canvasjs_db'數據庫中讀取的。請下載並檢查。 –

+0

....所以你可以plz幫助我在如何把我的數據庫值分別爲x和y軸...我在我的數據庫中的數據庫值是時間和溫度....所以我想獲取這些值,並分別餵給他們的x和y軸...我無法從過去一週找出... plz幫助... –

3

您需要以CanvasJS接受的格式解析數據。檢查下面

$r1=[[["8/30/2016 9:37"],["8/30/2016 9:33"],["8/30/2016 9:32"],["8/30/2016 9:32"],["8/30/2016 9:32"],["8/30/2016 9:32"],["8/30/2016 9:32"],["8/30/2016 9:31"],["8/30/2016 9:31"],["8/30/2016 9:31"]]]; 

$r2=[[[25],[25],[28.91],[28.82],[28.84],[28.91],[29.05],[29.05],[28.92],[29.11]]]; 
$dataPoints=array(); 
for($i=0;$i<count($r1[0]);$i++){ 
    array_push($dataPoints,array('x'=> strtotime($r1[0][$i][0])*1000,'y'=>$r2[0][$i][0])); 
} 

var chart = new CanvasJS.Chart("chartContainer", { 
. 
. 
dataPoints: <?php echo json_encode($dataPoints); ?> // edited 
. 
. 
}); 
+0

Khatri ....感謝您的回覆......我按照您的說法嘗試過,但沒有在圖表中顯示任何值....但是當我回顯數據點時我能夠分別看到x和y的值,但圖表不顯示任何東西,事實上,圖表模塊只在我運行時才顯示... –

+0

@M anuManohara我測試了代碼,它在我的最後工作正常。您能否分享您的新PHP代碼以及您所面臨的錯誤,以便我可以正確調查並解決問題。 –