使用 json 从 mysql 解析数据到 highchart

Data parsing from mysql into highchart with json

对此很陌生并且(几乎)绝望了。我想做的是:

所以我坚持使用看起来不错并且似乎易于设置的 highcharts,因为一切都发生在客户端(数据解析除外)。

现在我不知道如何创建提供给 highchart 的数组。它应该看起来像这样(create-graph.html 的内容)

<!DOCTYPE html>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script‌​>
<script src="http://code.highcharts.com/highcharts.js"></script>
<script src="http://code.highcharts.com/modules/exporting.js"></script>

<div id="container" style="min-width: 310px; height: 400px; margin: 0 auto"></div>

<script type="text/javascript">
$(document).ready(function() {

    var options = {
        chart: {
            renderTo: 'container',
            type: 'spline'
        },
        series: [{}]
    };

    $.getJSON('data.php', function(data) {
        options.series[0].data = temp;
        var chart = new Highcharts.Chart(options);
    });

});
</script>

从sql-server用data.php解析数据(如下图内容),应该生成on-call数据吧?

<php>
 $dbc = mysqli_connect("localhost", "pi", "pi", "boxklima");
 $query = "SELECT date,temp FROM 0414604605ff";
 $data = mysqli_query($dbc, $query);
 $i=0;
 while($row = mysqli_fetch_array($data)) {
    $rows[$i]=array($row['date'],$row['temp']);
    $i++;
 }
 echo json_encode($rows);
</php>

打开(在浏览器中)data.php 只显示

$dbc = mysqli_connect("localhost", "pi", "pi", "boxklima"); $query = "SELECT date,temp FROM 0414604605ff"; $data = mysqli_query($dbc, $query); $i=0; while($row = mysqli_fetch_array($data)) { $rows[$i]=array($row['date'],$row['temp']); $i++; } echo json_encode($rows); 

打开 create-graph.html 导致空白屏幕。 凭据设置为 755,php-文件设置了执行位。文件在同一目录中。

帮助感谢,提前谢谢你,我迷失在信息中,绝对困惑。 通读其他主题,但由于我是新手,它只给了我一些我无法匹配的小块。 :S 更多信息:

lighttpd/1.4.31

PHP Version 5.4.36-0+deb7u1
additional config files parsed

/etc/php5/cgi/conf.d/10-pdo.ini, /etc/php5/cgi/conf.d/20-gd.ini, 
/etc/php5/cgi/conf.d/20-mcrypt.ini, /etc/php5/cgi/conf.d/20-mysql.ini, 
/etc/php5/cgi/conf.d/20-mysqli.ini, /etc/php5/cgi/conf.d/20-pdo_mysql.ini 

json support    enabled
json version    1.2.1 

mysql Client API version    5.5.40 

将您的 php 文件更改为:

<?php
  $dbc = mysqli_connect("localhost", "pi", "pi", "boxklima");
  $query = "SELECT date,temp FROM 0414604605ff";
  $data = mysqli_query($dbc, $query);
  $i=0;
  while($row = mysqli_fetch_array($data)) {
     $rows[$i]=array($row['date'],$row['temp']);
     $i++;
  }
  echo json_encode($rows);
?>

In create-graph.html, 'temp' variable is undefined.(You may open JavaScript Console and check for JavaScript errors)这就是那个页面的原因是空白的。

查看您的 data.php 文件,我认为 $.getJSON 回调函数中的 'data' 变量的结构如下:

[
   [2014-01-01 09:00:00, 12.43]
   [2014-01-02 09:00:00, 13.57]
]

基本上是数组的数组。 因此,将您的功能更改为此可能会有所帮助:

$.getJSON('data.php', function(data) {
    dataTemp = [];
    for(i=0;i<data.length;i++){
        dataTemp.push(data[i][1]);  // '1' index for getting that temp value. '0' for date.     
    }
    options.series[0].data = dataTemp;
    var chart = new Highcharts.Chart(options);
});

另请 post 在网络浏览器中打开 data.php 的内容。
在进行更改后打开 create-graph.html 时还要提及 JavaScript 控制台错误(如果出现)。

您需要将字符串日期转换为时间戳并设置 xAxis 的日期时间类型。如需帮助,请参阅 strtotime function 并应用到您的 PHP 脚本中。