I'm trying to graph some data from my database on a Highchart, but I can't seem to get the data to show.
I have the following PHP (snippet) that gets the data from the database and json_encodes it:
<?php
$result = mysqli_query($cxn,"SELECT * FROM counter");
while($row = mysqli_fetch_array($result)) {
$value = $row['value'];
$timestamp = strtotime($row['datetime']);
$data[] = "[$value, $timestamp]";
}
json_encode($data);
?>
The json_encode prints the following (I'm using datetime):
["[500, 1384122794]","[600, 1384153203]"]
I then have the following to graph the data:
<html>
<body>
<div id="container" style="height: 500px; min-width: 500px"></div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="http://code.highcharts.com/stock/highstock.js"></script>
<script>
$(function() {
$.getJSON('http://www.website.com/graph.php', function(data) { // I put website.com on purpose
// Create the chart
$('#container').highcharts('StockChart', {
rangeSelector : {
selected : 1
},
title : {
text : 'Title'
},
series : [{
name : 'AAPL',
data : data,
tooltip: {
valueDecimals: 2
}
}]
});
});
});
</script>
</body>
</html>
The problem is that the graph doesn't actually show the points, it's just a blank graph.
What am I doing wrong?
The problem is that you return string, you need to return data as numbers. I recommend to familar with json_encode() flags, like JSON_NUMERIC_CHECK. Secondly
$data[] = "[$value, $timestamp]";
line needs to be array not string with printed bracket.To answer my own question, I changed the while loop to:
Step-1 Create Database [highchartdemo]
Step-2 Create Two tables [demo_viewer, demo_click]
demo_viewer table:![enter image description here](https://i.stack.imgur.com/5wiDd.png)
demo_click table:![enter image description here](https://i.stack.imgur.com/QAdT7.png)
Step3- Create Database Configuration File config.php
Step-4 Create Index.php file index.php
you want to assign an array of "data" to the single column data which is wrong
see here :
one solution is to use a for loop and assign data and name in each loop