Dan Dan - 17 days ago 6
Javascript Question

JavaScript variable in an object

I am pulling some data from my database and turning it into an array which is perfect. I need to insert those into an object:

data: {
labels: ["Red", "Remaining"],
datasets: [{
data: [90, 10], <-- here
backgroundColor: [
'rgba(255, 99, 132, 1)'
],
borderWidth: 1
}]


I am getting the data like so...

<?php
$sql = 'SELECT COUNT(*) category FROM users GROUP BY category';
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
while($row = mysqli_fetch_assoc($result)) {

$categoriesTest[] = $row["category"];

}

}

?>


And turning it into a JavaScript variable like:

var dataString="<?php echo rtrim(implode(', ', $categoriesTest), ','); ?>";


And here is the full code, bascially they will be the values for a chart.js chart.

<?php
$sql = 'SELECT COUNT(*) category FROM users GROUP BY category';
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
while($row = mysqli_fetch_assoc($result)) {

$categoriesTest[] = $row["category"];

}

}

?>

<script>

var dataString="<?php echo rtrim(implode(', ', $categoriesTest), ','); ?>";

document.write(dataString);

var ctx = document.getElementById("myChart");

var myChart = new Chart(ctx, {
type: 'doughnut',
animation:{
animateScale:true
},

options: {
legend: {
display: false
},
tooltips: {
enabled: false
}
},

data: {
labels: ["Red", "Remaining"],
datasets: [{
data: [90, 10],
backgroundColor: [
'rgba(255, 99, 132, 1)'
],
borderWidth: 1
}]
}

});
</script>


** Update **

var dataString="<?php echo rtrim(implode($categoriesTest), ','); ?>";

var dataObject = JSON.parse(dataString);

document.write(dataString);

var ctx = document.getElementById("myChart");

var myChart = new Chart(ctx, {
type: 'doughnut',
animation:{
animateScale:true
},

options: {
legend: {
display: false
},
tooltips: {
enabled: false
}
},

data: {
labels: ["Red", "Remaining"],
datasets: [{
data: dataObject.categories,
backgroundColor: [
'rgba(255, 99, 132, 1)'
],
borderWidth: 1
}]
}

});

Answer

json_encode function is good for that. Any php array you can transfer to json and then echo in the js.

var dataString="<?php echo json_encode($categoriesTest);  ?>";
Comments