Надеюсь на некоторую помощь.
У меня есть данные в базе данных 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: был TYPO! в то время как ($ row = mysql_fetch_assoc ($ result)) должно было быть:
while ($ row = mysqli_fetch_assoc ($ result)). Я забыл, что я в mysql_fetch!
Наряду с огромной помощью от Грега, он отлично работает сейчас.
Спасибо за помощь!