【发布时间】:2013-07-16 23:53:18
【问题描述】:
有一个个人温度监控项目,将家中不同房间的所有温度记录到 mysql 数据库中,前几天我遇到了 highstock/charts 并一直在使用它,但我似乎无法让它与多个一系列数据。
数据如何记录到表中;
datetime
位置
温度
mysql 中的记录是什么样子的; 2013-07-18 15:52:26 / 大师 / 12.34
我已经设法让这一切都适用于一组数据,但我不确定我需要做什么以及最好的方法是如何格式化 json 和 mysql 查询,以便 highcharts 可以读取 json/mysq 数据并将所有 6 个位置的温度数据绘制在一张图表上。
完整的代码;主要的 highstock 图表文件。 http://pastebin.com/XWkThfc8 这是从 mysql 数据库生成 JSON 的文件。 http://pastebin.com/RXBFr24P
这是使用上述查询的一组数据当前的样子.... [1374593356000,17.31],[1374593427000,17.25],[1374593497000,17.31],[1374593567000,17.31],[1374593638000, 17.31],[1374593708000,17.25],[1374593778000,17.25],[1374593849000,17.25],[1374593919000,17.25],[1374593989000,17.25],[1374594060000,17.25],[1374594130000,17.25] ....等
所以我的问题是;
什么是最好的方法来改变它所以它绘制所有数据,目前它似乎不起作用;
mysql_select_db("mqtt", $con);
$return_arr = array();
$fetch = mysql_query("SELECT timeof, message FROM temperatures WHERE DATE(timeof) BETWEEN DATE_SUB(CURDATE(), INTERVAL 7 DAY) AND CURDATE() AND locationmap = 'master'");
$i=0;
while ($row = mysql_fetch_array($fetch, MYSQL_ASSOC)) {
$rows[$i]=array(strtotime($row[timeof])*1000 ,(float)$row[message]);
$i++;
}
echo json_encode($rows);
我假设它需要采用这种格式的多组数据。
[{name:'kitchen',data:[[date,temp],[date,temp],[date,temp]]},{name:'lounge',data:[[date ,temp],[date,temp],[date,temp]]}]
不确定如何更改我的查询,以便将所有位置的数据提取出来,然后正确编码。
UPDATE-1
最新代码,
$return_arr = array();
$fetch = mysql_query("SELECT timeof, locationmap AS location, message AS temp FROM temperatures WHERE DATE(timeof) BETWEEN DATE_SUB(CURDATE(), INTERVAL 1 DAY) AND CURDATE() ORDER BY location, timeof ASC");
$i=0;
while ($row = mysql_fetch_array($fetch, MYSQL_ASSOC)) {
$rows[$i]=array(strtotime($row[timeof])*1000 ,(float)$row[temp],$row[location]);
$i++;
}
echo json_encode($rows);
但是它没有返回上述正确的格式。
结果是这样的。 (显然有 1000 个整体。)
[1375272426000,22.63,"cupboard"],[1375272496000,22.69,"cupboard"],[1375272566000,22.75,"cupboard"],[1375272637000,22.75,"cupboard"],[1375272707000,22.69,"cupboard"],[1375272777000,22.63,"cupboard"],[1375106429000,17.69,"kitchen"],[1375106500000,17.69,"kitchen"],[1375106570000,17.63,"kitchen"],[1375106640000,17.63,"kitchen"],[1375106711000,17.63,"kitchen"],[1375106781000,17.63,"kitchen"],[1375106851000,17.63,"kitchen"],[1375106921000,17.56,"kitchen"],[1375106992000,17.56,"kitchen"],[1375107062000,17.56,"kitchen"],[1375107132000,17.56,"kitchen"],[1375107203000,17.56,"kitchen"],[1375107273000,17.5,"kitchen"],[1375107343000,17.5,"kitchen"],[1375107413000,17.5,"kitchen"]
我认为我的查询现在是正确的!??只是需要一些关于 json 输出的帮助!
UPDATE-2 感谢 highcharts 论坛,这是我需要 JSON 的格式,只需要 php/mysql 方面的帮助...
[{
name: 'kitchen',
data: [
[time, value],
[time, value]
]
}, {
name: 'attic',
data: [
[time, value],
[time, value]
]
}]
UPDATE-3 让它与多个系列数据一起工作,我不必多次调用我的 json php 脚本,已将这两个文件放在 GIST 上,以供遇到类似问题的任何人使用。
https://gist.github.com/matbor/8854385 https://gist.github.com/matbor/8853902
【问题讨论】:
-
大家好,任何人都可以帮助我使用正确的语法,对于查询和 json 输出,我认为它只需要一些调整,但我是其中的一些新手,并且一直在谷歌搜索并尝试不同的东西运气不好。