我试图从PHP变量插入JSON编码的MySQL结果集到Highcharts脚本中。将JSON编码的PHP变量传递给HighCharts
我已经成功地将一个MySQL结果列表从一个PHP变量插入到另一个实例中的Highcharts,通过Group格式化为Highchart可接受的数据在SQL Select语句中连接逗号和撇号(这是一种肮脏但有效的方式它)。我现在的目标是让我的图表在工具提示中显示元数据,我无法工作,但我认为我与我的工作很接近。
-
这里是PHP脚本来检索从MySQL数据库和JSON数据进行编码:
$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}]
下面是基础Highcharts,我正在试图重塑脚本(这是功能性的)使用我自己的数据(发现在this JSfiddle)。
<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](http://jsfiddle.net/xepyc424/1/)是更新的小提琴,看看。 –
谢谢你的帮助;这告诉我很多,但是,“y:”值必须不带引号产生。我会尽量让这发生cap'n。将根据结果更新帖子。 –