php - 用json将mysql数据解析成highchart

标签 php mysql json highcharts

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

  • 从传感器读取温度(有效,返回 float )
  • 将数据保存在mysql数据库boxklima.sensorid(有效 - 表是boxklima.0414604605ff)中的日期-临时对集中,日期存储为2014-01-01 09:00:00(日期时间),临时存储为12.123 (真实)
  • 将数据绘制为 x 轴:日期 y 轴:温度(完全搞砸了)

所以我坚持使用 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(内容如下所示)解析数据,应该会生成调用数据,对吗?

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

在create-graph.html中,'temp'变量未定义。(您可以打开JavaScript控制台并检查JavaScript错误)这就是该页面为空白的原因。

查看您的 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);
});

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

关于php - 用json将mysql数据解析成highchart,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27974429/

相关文章:

PHP session_set_cookie_params 中断 php session_start() 函数和 $_SESSION 变量

python - Python 中 Json 覆盖自身

php - 空输出触发错误

php - 停止 javascript 缓存

mysql - 在 SQuirreL 中调用 MySQL 存储过程

MySQL 存储过程循环遍历 2 个表,选择值并存储在第 3 个表中

json - Ember Cli 和 ASP.NET webapi - 连接数据

jquery - 如何使用 JSON 在 select2 中设置 optgroup

php - woocommerce_cart_calculate_fees 在 woocommerce_before_cart_table 之后加载

mysql - SQL 引擎会在此查询中使用除暴力以外的任何方法吗?