1

i've made a highcharts using json data for the series. i need to make the highchart refresh and redraw new data from the other json data. i dont know how to do it t_T someone please help me..

this is my code

<?php
$con=mysqli_connect("localhost","root","","silo");

if (!$con) {
  die('Could not connect: ' . mysql_error());
}


// Data for Titik1

$query = mysqli_query($con,"SELECT * FROM temp1 where no ='1'");
$rows = array();
$rows['name'] = 'Titik 1';
while($tmp= mysqli_fetch_array($query)) {
    $rows['data'][] = $tmp['sensor1'];
    $rows['data'][] = $tmp['sensor2'];
    $rows['data'][] = $tmp['sensor3'];
    $rows['data'][] = $tmp['sensor4'];
    $rows['data'][] = $tmp['sensor5'];
    $rows['data'][] = $tmp['sensor6'];
    $rows['data'][] = $tmp['sensor7'];
    $rows['data'][] = $tmp['sensor8'];
    $rows['data'][] = $tmp['sensor9'];
    $rows['data'][] = $tmp['sensor10'];
    $rows['data'][] = $tmp['sensor11'];
    $rows['data'][] = $tmp['sensor12'];
}

// Data for Titik2
$query = mysqli_query($con,"SELECT * FROM temp1 where no ='2'");
$rows1 = array();
$rows1['name'] = 'Titik 2';
while($tmp = mysqli_fetch_array($query)) {
    $rows1['data'][] = $tmp['sensor1'];
    $rows1['data'][] = $tmp['sensor2'];
    $rows1['data'][] = $tmp['sensor3'];
    $rows1['data'][] = $tmp['sensor4'];
    $rows1['data'][] = $tmp['sensor5'];
    $rows1['data'][] = $tmp['sensor6'];
    $rows1['data'][] = $tmp['sensor7'];
    $rows1['data'][] = $tmp['sensor8'];
    $rows1['data'][] = $tmp['sensor9'];
    $rows1['data'][] = $tmp['sensor10'];
    $rows1['data'][] = $tmp['sensor11'];
    $rows1['data'][] = $tmp['sensor12'];
}

// Data for Titik3
$query = mysqli_query($con,"SELECT * FROM temp1 where no ='3'");
$rows2 = array();
$rows2['name'] = 'Titik 3';
while($tmp = mysqli_fetch_array($query)) {
    $rows2['data'][] = $tmp['sensor1'];
    $rows2['data'][] = $tmp['sensor2'];
    $rows2['data'][] = $tmp['sensor3'];
    $rows2['data'][] = $tmp['sensor4'];
    $rows2['data'][] = $tmp['sensor5'];
    $rows2['data'][] = $tmp['sensor6'];
    $rows2['data'][] = $tmp['sensor7'];
    $rows2['data'][] = $tmp['sensor8'];
    $rows2['data'][] = $tmp['sensor9'];
    $rows2['data'][] = $tmp['sensor10'];
    $rows2['data'][] = $tmp['sensor11'];
    $rows2['data'][] = $tmp['sensor12'];
}
// Data for Titik4
$query = mysqli_query($con,"SELECT * FROM temp1 where no ='4'");
$rows3 = array();
$rows3['name'] = 'Titik 4';
while($tmp = mysqli_fetch_array($query)) {
    $rows3['data'][] = $tmp['sensor1'];
    $rows3['data'][] = $tmp['sensor2'];
    $rows3['data'][] = $tmp['sensor3'];
    $rows3['data'][] = $tmp['sensor4'];
    $rows3['data'][] = $tmp['sensor5'];
    $rows3['data'][] = $tmp['sensor6'];
    $rows3['data'][] = $tmp['sensor7'];
    $rows3['data'][] = $tmp['sensor8'];
    $rows3['data'][] = $tmp['sensor9'];
    $rows3['data'][] = $tmp['sensor10'];
    $rows3['data'][] = $tmp['sensor11'];
    $rows3['data'][] = $tmp['sensor12'];
}
// Data for Titik 5
$query = mysqli_query($con,"SELECT * FROM temp1 where no ='5'");
$rows4 = array();
$rows4['name'] = 'Titik 5';
while($tmp = mysqli_fetch_array($query)) {
    $rows4['data'][] = $tmp['sensor1'];
    $rows4['data'][] = $tmp['sensor2'];
    $rows4['data'][] = $tmp['sensor3'];
    $rows4['data'][] = $tmp['sensor4'];
    $rows4['data'][] = $tmp['sensor5'];
    $rows4['data'][] = $tmp['sensor6'];
    $rows4['data'][] = $tmp['sensor7'];
    $rows4['data'][] = $tmp['sensor8'];
    $rows4['data'][] = $tmp['sensor9'];
    $rows4['data'][] = $tmp['sensor10'];
    $rows4['data'][] = $tmp['sensor11'];
    $rows4['data'][] = $tmp['sensor12'];
}
// Data for Titik 6
$query = mysqli_query($con,"SELECT * FROM temp1 where no ='6'");
$rows5 = array();
$rows5['name'] = 'Titik 6';
while($tmp = mysqli_fetch_array($query)) {
    $rows5['data'][] = $tmp['sensor1'];
    $rows5['data'][] = $tmp['sensor2'];
    $rows5['data'][] = $tmp['sensor3'];
    $rows5['data'][] = $tmp['sensor4'];
    $rows5['data'][] = $tmp['sensor5'];
    $rows5['data'][] = $tmp['sensor6'];
    $rows5['data'][] = $tmp['sensor7'];
    $rows5['data'][] = $tmp['sensor8'];
    $rows5['data'][] = $tmp['sensor9'];
    $rows5['data'][] = $tmp['sensor10'];
    $rows5['data'][] = $tmp['sensor11'];
    $rows5['data'][] = $tmp['sensor12'];
}
// Data for Titik 7
$query = mysqli_query($con,"SELECT * FROM temp1 where no ='7'");
$rows6 = array();
$rows6['name'] = 'Titik 7';
while($tmp = mysqli_fetch_array($query)) {
    $rows6['data'][] = $tmp['sensor1'];
    $rows6['data'][] = $tmp['sensor2'];
    $rows6['data'][] = $tmp['sensor3'];
    $rows6['data'][] = $tmp['sensor4'];
    $rows6['data'][] = $tmp['sensor5'];
    $rows6['data'][] = $tmp['sensor6'];
    $rows6['data'][] = $tmp['sensor7'];
    $rows6['data'][] = $tmp['sensor8'];
    $rows6['data'][] = $tmp['sensor9'];
    $rows6['data'][] = $tmp['sensor10'];
    $rows6['data'][] = $tmp['sensor11'];
    $rows6['data'][] = $tmp['sensor12'];
}
// Data for Titik 8
$query = mysqli_query($con,"SELECT * FROM temp1 where no ='8'");
$rows7 = array();
$rows7['name'] = 'Titik 8';
while($tmp = mysqli_fetch_array($query)) {
    $rows7['data'][] = $tmp['sensor1'];
    $rows7['data'][] = $tmp['sensor2'];
    $rows7['data'][] = $tmp['sensor3'];
    $rows7['data'][] = $tmp['sensor4'];
    $rows7['data'][] = $tmp['sensor5'];
    $rows7['data'][] = $tmp['sensor6'];
    $rows7['data'][] = $tmp['sensor7'];
    $rows7['data'][] = $tmp['sensor8'];
    $rows7['data'][] = $tmp['sensor9'];
    $rows7['data'][] = $tmp['sensor10'];
    $rows7['data'][] = $tmp['sensor11'];
    $rows7['data'][] = $tmp['sensor12'];
}
// Data for Titik 9
$query = mysqli_query($con,"SELECT * FROM temp1 where no ='9'");
$rows8 = array();
$rows8['name'] = 'Titik 9';
while($tmp = mysqli_fetch_array($query)) {
    $rows8['data'][] = $tmp['sensor1'];
    $rows8['data'][] = $tmp['sensor2'];
    $rows8['data'][] = $tmp['sensor3'];
    $rows8['data'][] = $tmp['sensor4'];
    $rows8['data'][] = $tmp['sensor5'];
    $rows8['data'][] = $tmp['sensor6'];
    $rows8['data'][] = $tmp['sensor7'];
    $rows8['data'][] = $tmp['sensor8'];
    $rows8['data'][] = $tmp['sensor9'];
    $rows8['data'][] = $tmp['sensor10'];
    $rows8['data'][] = $tmp['sensor11'];
    $rows8['data'][] = $tmp['sensor12'];
}
// Data for Titik 10
$query = mysqli_query($con,"SELECT * FROM temp1 where no ='10'");
$rows9 = array();
$rows9['name'] = 'Titik 10';
while($tmp = mysqli_fetch_array($query)) {
    $rows9['data'][] = $tmp['sensor1'];
    $rows9['data'][] = $tmp['sensor2'];
    $rows9['data'][] = $tmp['sensor3'];
    $rows9['data'][] = $tmp['sensor4'];
    $rows9['data'][] = $tmp['sensor5'];
    $rows9['data'][] = $tmp['sensor6'];
    $rows9['data'][] = $tmp['sensor7'];
    $rows9['data'][] = $tmp['sensor8'];
    $rows9['data'][] = $tmp['sensor9'];
    $rows9['data'][] = $tmp['sensor10'];
    $rows9['data'][] = $tmp['sensor11'];
    $rows9['data'][] = $tmp['sensor12'];
}// Data for Titik 11
$query = mysqli_query($con,"SELECT * FROM temp1 where no ='11'");
$rows10 = array();
$rows10['name'] = 'Titik 11';
while($tmp = mysqli_fetch_array($query)) {
    $rows10['data'][] = $tmp['sensor1'];
    $rows10['data'][] = $tmp['sensor2'];
    $rows10['data'][] = $tmp['sensor3'];
    $rows10['data'][] = $tmp['sensor4'];
    $rows10['data'][] = $tmp['sensor5'];
    $rows10['data'][] = $tmp['sensor6'];
    $rows10['data'][] = $tmp['sensor7'];
    $rows10['data'][] = $tmp['sensor8'];
    $rows10['data'][] = $tmp['sensor9'];
    $rows10['data'][] = $tmp['sensor10'];
    $rows10['data'][] = $tmp['sensor11'];
    $rows10['data'][] = $tmp['sensor12'];
}


$result = array();
array_push($result,$rows);
array_push($result,$rows1);
array_push($result,$rows2);
array_push($result,$rows3);
array_push($result,$rows4);
array_push($result,$rows5);
array_push($result,$rows6);
array_push($result,$rows7);
array_push($result,$rows8);
array_push($result,$rows9);
array_push($result,$rows10);


print json_encode($result, JSON_NUMERIC_CHECK);

mysqli_close($con);
?> 
        // JavaScript Document
$(document).ready(function() {
        (function(H) {
            H.Chart.prototype.createCanvas = function(divId) {
                var svg = this.getSVG(),
                    width = parseInt(svg.match(/width="([0-9]+)"/)[1]),
                    height = parseInt(svg.match(/height="([0-9]+)"/)[1]),
                    canvas = document.createElement('canvas');

                canvas.setAttribute('width', width);
                canvas.setAttribute('height', height);

                if (canvas.getContext && canvas.getContext('2d')) {

                    canvg(canvas, svg);

                    return canvas.toDataURL("image/png");

                } 
                else {
                    alert("Your browser doesn't support this feature, please use a modern browser");
                    return false;
                }

            }
        }(Highcharts));

        //charts
        // JavaScript Document
        $(function () {
            var chart;
            $(document).ready(function() {
                $.getJSON("../php/termocouple/line_termocouple.php", function(json) {

                    chart = new Highcharts.Chart({
                        chart: {
                            renderTo: 'chart1',
                            type: 'line'

                        },
                        title: {
                            text: 'Termocouple Graph Result'

                        },
                        subtitle: {
                            text: ''

                        },
                        xAxis: {
                            title: {
                                text: 'Sensor'
                            },
                            categories: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12']
                        },
                        yAxis: {
                            title: {
                                text: 'Temperature (°C)'
                            },
                            plotLines: [{
                                value: 0,
                                width: 1,
                                color: '#808080'
                            }]
                        },
                        tooltip: {
                            formatter: function() {
                                    return '<b>'+ this.series.name +'</b><br/>'+
                                    this.x +': '+ this.y;
                            }
                        },
                        legend: {
                            layout: 'vertical',
                            align: 'right',
                            verticalAlign: 'top',
                            x: -10,
                            y: 120,
                            borderWidth: 0
                        },
                        series: json
                    });

                });

            });


        }); 
            });
Jack Henaldy
  • 69
  • 1
  • 10

1 Answers1

0

You need to Update your chart.

  1. You can do a simple chart update which updates the chart information (Chart Update API)

    chart.update({
        title: {
           text: 'new text'
        }
    })
    

    JS fiddle of Update Charts in action.

  2. You can do a series update which updates the chart data itself. (Series Update API)

    // if data is in json format, convert it to an array
    chart.series[0].update({
        data: [...]  //pass your new data here
    });
    

    JS Fiddle for Series Update.

Ref: JS Fiddle Ref

Niket Pathak
  • 6,323
  • 1
  • 39
  • 51
  • when i use a json as the series. i just change the series on the onclick function into my json data right? – Jack Henaldy Mar 13 '17 at 01:23
  • when i use json for the data series. i just change the series into my json dataseries right? – Jack Henaldy Mar 13 '17 at 01:24
  • @jackHenaldy yes. you can also see the example in the JS fiddle :) – Niket Pathak Mar 13 '17 at 07:40
  • i've try it but nothing happed. and no data displaying at my chart – Jack Henaldy Mar 13 '17 at 07:57
  • ok, maybe you are passing the json data incorrectly. So there are 2 ways: 1 - you convert json data to array format before passing to data: [...]. [SO post](http://stackoverflow.com/questions/20881213/converting-json-object-into-javascript-array) 2. you pass json data directly to series. [SO post](http://stackoverflow.com/questions/29643609/how-to-pass-json-data-to-highcharts-series) Hope this helps. – Niket Pathak Mar 13 '17 at 09:43