javascript — Bar Chart.js не отображает значения с PHP, MySQL, AJAX

Я использую плагин Chart.js для создания гистограммы со значениями продаж и покупок по годам. Эти значения хранятся в базе данных mysql, и я передаю их через PHP / AJAX.

HTML

<canvas id="mybarChart"></canvas>

PHP

$sql = "SELECT YEAR(date) as years, SUM(amount) AS total FROM purchases GROUP BY YEAR(date)";
$res = mysql_query($sql);
$totalpurchases = [];

$sqll = "SELECT YEAR(date) as years, SUM(amount) AS total FROM sales GROUP BY YEAR(date)";
$ress = mysql_query($sqll);
$totalsales = [];

while($row = mysql_fetch_array($res)){
$totalpurchases[] = [$row['total']];
}

while($roww = mysql_fetch_array($ress)){
$totalsales[] = [$roww['total']];
}

echo json_encode(array($totalpurchases,$totalsales));

И я сделал мой JS код как это:

function show_chartbar(lbl01,lbl02){
var ctx = document.getElementById("mybarChart");
var mybarChart = new Chart(ctx, {
type: 'bar',
data: {
labels: ["2013", "2014", "2015", "2016", "2017"],
datasets: [{
label: '# Total Purchase',
backgroundColor: "#26B99A",
data: lbl01
}, {
label: '# Total Sales',
backgroundColor: "#03586A",
data: lbl02
}]
},

options: {
scales: {
yAxes: [{
ticks: {
beginAtZero: true
}
}]
}
}
});
}

if ($('#mybarChart').length ){

$.ajax({
url: "scripts/values.php",
type: "GET",
dataType: "json",
success: function(resp)
{
var totpurchases = resp[0];
var totsales = resp[1];
console.log("Total Purchases: "+totpurchases);
console.log("Total Sales: "+totsales);
show_chartbar(totpurchases,totsales);
}
});

}

В консоли он показывает значения правильно, но не отображается на графике:

введите описание изображения здесь

Я попытался добавить дополнительные скобки в параметре данных, но он показывает то же самое.

ОБНОВИТЬ

console.dir(resp);

введите описание изображения здесь

Как я могу это исправить? Мне нужна помощь.

1

Решение

Вы создаете массив массивов. Я верю, что это решит эту проблему.

while($row = mysql_fetch_array($res)){
$totalpurchases[] = $row['total'];
}

while($roww = mysql_fetch_array($ress)){
$totalsales[] = $roww['total'];
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector