使用 json 从 mysql 解析数据到 highchart
Data parsing from mysql into highchart with json
对此很陌生并且(几乎)绝望了。我想做的是:
- 从传感器读取温度(有效,returns 浮动)
- 将数据保存在 mysql 数据库中 boxklima.sensorid(有效 - table 是 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解析数据(如下图内容),应该生成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 脚本中。
对此很陌生并且(几乎)绝望了。我想做的是:
- 从传感器读取温度(有效,returns 浮动)
- 将数据保存在 mysql 数据库中 boxklima.sensorid(有效 - table 是 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解析数据(如下图内容),应该生成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 脚本中。