Puoi fare sia con che senza ajax. Con ajax puoi lasciare il codice com'è, poi nel html dovresti fare una cosa del genere (almeno da quel che ho capito da chart.js)
codice:
<script>
$(window).load(function () {
var ctx = document.getElementById('canvas');
$.ajax({
type: 'GET',
dataType: 'json',
url: 'url_del_tuo_file_php.php',
success: function(response){
if(response){
var labels = [];
var data = [];
// Prendi la risposta JSON e la dividi in label e i dati
$.each(response, function(index, value){
labels.push(value.Descrizione);
// Sono questi i tuoi valori da graficare ?
data.push(value.Diagnosi_Principale);
});
var chart = new Chart(ctx, {
type: 'bar',
data: {
labels: labels,
datasets: [{
data: data
}]
}
});
}
},
error: function(xhr, ajaxOptions, thrownError){
alert(thrownError);
},
});
});
</script>
Altrimenti, al posto di farti restituire un json, puoi scrivere direttamente i dati per chart.js:
Codice PHP:
<?php
....
$labels = array();
$data = array();
if ($result->num_rows > 0) {
//Converto i risultati in un array associativo
while($row = $result->fetch_assoc()) {
$data[] = $row['Diagnosi'];
$labels[] = $row['Descrizione'];
}
}
header('Content-Type: application/javascript');
?>
var labels = ["<?php echo implode('","', $labels) ?>"];
var data = [<?php echo implode(',', $data) ?>];
Poi l'html diventa
codice:
<script src="url_al_tuo_file_php.php"></script>
$(window).load(function () {
var ctx = document.getElementById('canvas');
var chart = new Chart(ctx, {
type: 'bar',
data: {
labels: labels, // data e labels sono presi dal tuo file php incluso come javascript
datasets: [{
data: data
}]
}
});
}
PS: Ho usato jQuery, inoltre prendilo con le pinze...ci potrebbero essere errori. E cmq forse è più un argomento da javascript