对此很陌生并且(几乎)绝望。我想做的是:
- 从传感器读取温度(有效,返回 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/