【发布时间】:2016-08-15 06:57:24
【问题描述】:
我正在尝试将来自 PHP 变量的 JSON 编码 MySQL 结果集插入到 Highcharts 脚本中。
我已成功将 MySQL 结果列表从 PHP 变量插入到不同实例中的 Highcharts,通过在 SQL Select 语句中连接逗号和撇号将其格式化为 Highchart 可接受的数据(这是一种肮脏但有效的方法) )。我现在的目标是让我的图表在工具提示中显示元数据,我无法开始工作,但我认为我已经接近了。
--
这是从 MySQL 数据库中检索数据并对其进行 JSON 编码的 PHP 脚本:
$mysqli = new mysqli('localhost','username','password','database');
$myArray = array();
if ($result = $mysqli->query("
SELECT
time_minutes.minutes*60+time_seconds.seconds AS y,
run_date.id AS ID,
run_date.date AS RunDate,
run_temp.temperature AS Temperature,
run_conditions.weather AS Conditions,
run_hydration.hydration_level AS Hydration
FROM run_conditions, run_date, run_hydration, run_notes, run_temp, time_minutes, time_seconds
WHERE run_date.id = run_conditions.id
AND run_date.id = run_hydration.id
AND run_date.id = run_notes.id
AND run_date.id = run_temp.id
AND run_date.id = time_minutes.id
AND run_date.id = time_seconds.id
")) {
while($row = $result->fetch_array(MYSQL_ASSOC)) {
$myArray[] = $row;
}
}
$raw_json = json_encode($myArray);
$json_without_quotes = str_replace('"', "", $raw_json);
$result->close();
$mysqli->close();
?>
y 值是我想要的条形高度;其余的是元数据(温度、条件等)我想出现在工具提示中。
raw_json 输出如下所示:
[{"y":"1500.00",
"ID":"1",
"RunDate":"2015-10-19",
"Temperature":"87",
"Conditions":"Humid and hot",
"Hydration":"8"},
{"y":"1474.48",
"ID":"2",
"RunDate":"2015-10-21",
"Temperature":"80",
"Conditions":"Light rain",
"Hydration":"9"},
{"y":"1442.01",
"ID":"3",
"RunDate":"2015-10-22",
"Temperature":"82",
"Conditions":"Sunny",
"Hydration":"4"}]
json_without_quotes 输出如下所示:
[{y:1500.00,
ID:1,
RunDate:2015-10-19,
Temperature:87,
Conditions:Humid and hot,
Hydration:8},
{y:1474.48,
ID:2,
RunDate:2015-10-21,
Temperature:80,
Conditions:Light rain,
Hydration:9},
{y:1442.01,
ID:3,
RunDate:2015-10-22,
Temperature:82,
Conditions:Sunny,
Hydration:4}]
下面是我尝试使用我自己的数据(在thisJSfiddle 找到)改造的基本 Highcharts 脚本(它是功能性的)。
<script>
$(function () {
var chart = new Highcharts.Chart({
chart: {
renderTo: 'chartchartchart',
type: 'column'
},
xAxis: {
categories: [(a dymanically-generated list of dates)]
},
series: [{
data: [{
这是我要插入 json_without_quotes 变量的地方;下面的数据格式正确,但我注意到它只包含整数; 必须更改某些内容以使其接受字符串作为参数,但我不知道必须更改什么。
y: 3,
locked: 1,
unlocked: 1,
potential: 1,
}, {
y: 5,
locked: 2,
unlocked: 1,
potential: 3,
}, {
y: 7,
locked: 3,
unlocked: 1,
potential: 3,
}]
}],
tooltip: {
formatter: function() {return ' ' +
'Locked: ' + this.point.locked + '<br />' +
'Unlocked: ' + this.point.unlocked + '<br />' +
'Potential: ' + this.point.potential;
}
}
});
});
</script>
<div id="chartchartchart" style="height: 400px"></div>
提前感谢您的帮助!
【问题讨论】:
-
无论你想在工具提示中显示什么,都可以设置为字符串,因为它毕竟会显示为字符串。您不需要从 json 数据中删除引号。 Here 是更新的小提琴,看看吧。
-
感谢您的帮助;但是,这告诉了我很多,“y:”值必须在没有引号的情况下产生。我会尽力做到这一点。将根据结果更新帖子。
标签: javascript php mysql json highcharts