希望得到一些帮助。
我在MYSQL数据库中有数据,其中包含公司中的计算机列表。其中一个字段是购买计算机的日期,另一个是品牌。
我想使用 Chart 创建一个条形图.js显示每个不同年份我们拥有的计算机数量。因此,在 X 轴上,我们将所有不同的年份作为标签,在 Y 轴上,我们有每一年购买的所有计算机的计数。
我已经编写了这段代码,但无法使其工作:
查询:
$sql = "SELECT YEAR(purchased) AS years, COUNT(brand) AS 'count' FROM computers GROUP BY purchased, brand ORDER BY purchased";
$result = mysqli_query($conn, $sql);
$years = array();
$count = array();
while ($row = mysql_fetch_assoc($result)) {
$years[] = $row["years"];
$count[] = $row["count"];
}
mysqli_close($conn);
然后是图表:
<script>
var barChartData = {
labels : <?php=json_encode($years);?>,
datasets : [
{
fillColor : "rgba(220,220,220,0.5)",
strokeColor : "rgba(220,220,220,0.8)",
highlightFill: "rgba(220,220,220,0.75)",
highlightStroke: "rgba(220,220,220,1)",
data : <?php=json_encode($count);?>
} ]
}
window.onload = function(){
var ctx = document.getElementById("canvas").getContext("2d");
ctx.canvas.height = 200;
window.myBar = new Chart(ctx).Bar(barChartData, {
responsive : true
});
}
</script>
对我做错了什么的任何想法。一直在努力让这个图表。
谢谢。
您的数据设置为json_encode,这不是chart.js读取它的方式。
将代码从以下位置更改:
<?php=json_encode($count);?>
自:
["<?php echo implode('","',$count);?>"]
多年来,从:
<?php=json_encode($years);?>
自:
["<?php echo implode('","',$years);?>"]
引号是用来包含任何不是数值的东西,如果你肯定所有数据都是数值,你可以删除它们,但由于拥有它们并没有什么坏处,所以我把它们包括在内。
想
通了:
1:使用此查询:
选择年份(购买)作为年,计数(ID)作为计算机的计数 按年份分组
2:有错别字!而($row = mysql_fetch_assoc($result))应该是:
而 ($row = mysqli_fetch_assoc($result))。我忘了mysql_fetch的i!
在格雷格的大力帮助下,它现在工作得很好。
感谢您的帮助!