我是 Highcharts 的新手,正在尝试学习如何将它与 PHP 和 MySQL 一起使用。我想从数组中的一些示例数据中显示一个简单的柱形图。但是,我在实现这一点时遇到了一些问题。这些列未显示在图表中,并且我得到了一个在图例中为空白的额外标签。如果有人可以帮助我清理此代码,使其工作并提供带有注释的示例代码以帮助更好地理解它,那将有很大帮助。我相信其他几个人也在寻找类似的例子。我浏览了这个站点以及 HighCharts 论坛和示例,但找不到我正在寻找的东西,这可以更好地帮助我学习如何使用 PHP 和 MySQL 创建动态柱形图表。如果你能帮助很多提前谢谢。
这是我的代码,我知道它有几个问题,我试着把它作为一个简短的例子,让新手和学生很容易理解。非常感谢您的帮助:
我的示例数据包含该人的姓氏和销售额。它采用 TSV 格式,数组如下所示: Doe 3567 Right 5476 Johnson 4351 Brown 2945
数据.php
<?php
$con = mysql_connect("localhost","root","");
if (!$con) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db("test", $con);
$result = mysql_query("SELECT * FROM user");
while($row = mysql_fetch_array($result)) {
echo $row['lastname'] . "\t" . $row['sales']. "\n";
}
mysql_close($con);
?>
索引.php
<!DOCTYPE html><html><head>
</head><body>
<div id="container" style="height: 400px; width: 900px"></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script src="http://www.highcharts.com/js/highcharts.src.js"></script>
<script>
jQuery(function($) {
var options = {
chart: {renderTo: 'container', defaultSeriesType:'column', height: 400},
title: {text: 'Sales Performance'},
xAxis: {title: {text: 'Sales Peoples'}, type: 'linear'},
yAxis: {title: {text: 'Dollars'}, plotLines: [{ value: 0, width: 1, color: '#808080'}]},
tooltip: {
formatter: function() {
return '<b>'+ this.series.name +'</b><br/>'+'('+this.x +' : '+ this.y +')';
}
},
legend: {layout: 'vertical', align: 'left', verticalAlign: 'top', x: 40, y: 100, borderWidth: 0, width: 300 },
series: []
};
jQuery.get('data.php', null, function(tsv) {
var data = {};
tsv = tsv.split(/\n/g); // split into rows
for (var row=0, rows=tsv.length; row<rows; row++) {
var line = tsv[row].split(/\t/g), // split into columns
series_name = line[0],
x = Number(line[1]),
y = Number(line[2]);
if (!data[series_name]) data[series_name] = [];
data[series_name].push([x,y]);
//alert("The data is: "+series_name)
}
for (var series_name in data) {
options.series.push({
name: series_name,
data: data[series_name]
});
}
new Highcharts.Chart(options);
});
});
</script>
</body></html>