我使用HighCharts Bar graph将mysql结果集中的数据绘制成条形图。
现在我的查询的结果集如下:
Name Expense
-----------------
July 700.0000
August 450.0000
September 1700.0000
HighCharts的series
属性需要以下格式的数据来绘制图表
[
{name:"July",data:[700.0000]},
{name:"August",data:[450.0000]},
{name:"September",data:[1700.0000]}
]
所以我想到使用json_encode($row)
将我的结果集转换为JSON对象。
但我得到了以下输出:
[{"name":"July","data":"700.0000"},
{"name":"August","data":"450.0000"},
{"name":"September","data":"1700.0000"}]
疑惑:
我也可以在php块中使用创建的对象,直接进入javascript吗?假设我从结果集中创建了一个对象$jsonNameData
。然后我可以在javascript中使用它
series: <? echo $jsonNameData ?>
编辑:
我能够通过以下方式解决Q1:
$count = 0;
$strSeries = "[";
while($r = mysql_fetch_assoc($result)) {
if($count == 0){
$strSeries .= "{name:'" . $r['name'] . "',";
$strSeries .= "data:[" . $r['data'] . ']}';
$count = 1;
}
else {
$strSeries .= ",{name:'" . $r['name'] . "',";
$strSeries .= "data:[" . $r['data'] . ']}';
}
$rows[] = $r;
}
$strSeries .= "]";
将所需的字符串输入$strSeries
。
现在问题是第二个问题。我将$strSeries
的值分配给javascript中的变量,但是当我将该变量用作
series: variableName
即使变量具有适当的值(通过警报检查),也没有正确绘制图形。
答案 0 :(得分:1)
没有机会运行下面的代码,但这应该有效或与此非常相似
$series=array();
while($item = mysql_fetch_assoc($result)) {
$serie=array(
"name" => $item['name'],
"data" => array(floatval($item['data']))
);
array_push($series,$serie);
}
echo json_encode($series);
建议总是坚持json_encode()
进行jsonification。您可能希望浏览参考页面上的this example以了解json_encode如何与数组一起使用
编辑:回答您的第二个问题。您可能在javascript控制台中收到高清错误#14?看看这个问题Highcharts returning error 14
P.S。请不要将多个问题混合在一起,单独发布,也可以使用javascript控制台等工具,更有效地搜索SO
答案 1 :(得分:0)
我会试试这个:
$jsonObj = '[';
foreach($mysqlResul as $item){
$jsonObj .= '{"name":"'.$item['name'].'","data":['.$item['data'].']},';
}
// strip off last comma
$jsonObj = substr(0,strlen($jsonObj)-1,$jsonObj);
$jsonObj .= ']';
答案 2 :(得分:0)
select concat('{name:"', name, '",data:[', expense, ']}') as foo
from bar