2014-10-24 3 views
0

Я вытаскиваю значения из базы данных MySQL с помощью PHP и пытаюсь построить их с помощью Highcharts. Проблема, которую я нахожу, это значения xaxis, кажется, отключены на 4 часа. Просматривая прошлые потоки, некоторые люди помещают useUTC: false в параметры глобальной диаграммы, но, похоже, это не работало для меня. global:{ useUTC: false }Highcharts xaxis выключен несколькими часами

Вот код, который я использую для настройки диаграммы. Я новичок в javascript, поэтому очень возможно, что я сделал что-то глупое здесь. Какие-либо предложения?

<!DOCTYPE HTML> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
     <title>Temperature Data from XBee</title> 

     <script src="js/jquery-1.11.1.min.js"></script> 

     <script type="text/javascript"> 

     $(document).ready(function() { 
      var options = { 
       chart: { 
         renderTo: 'container', 
         type: 'line', 
         marginRight: 130, 
         marginBottom: 25 
        }, 
         title: { 
          text: 'Wireless Sensor Data: Temperature (F)', 
          x: -20 //center 
        }, 
       global: { 
        useUTC: false 
        }, 

       yAxis: { 
        title: { 
         text: 'temperature' 
          }, 
        type: 'double', 
        min: 0, 

        }, 
       xAxis: { 
        title: { 
         text: 'time' 
          }, 
        type: 'datetime'     
        }, 

       series: [{    
        name: 'Temperature', 
        data: [] 
        }] 
       } 

      $.getJSON("data.php", function(json) { 
       options.series[0].data = json; 
       chart = new Highcharts.Chart(options); 
       }); 
      }); 

     </script> 

     <script src="js/highcharts.js"></script>  
     <script src="js/themes/grid-light.js"></script> 
    </head> 
    <body> 
     <div id="container" style="min-width: 800px; height: 800px; margin: 0 auto"></div> 
    </body> 
</html> 

Вот мой PHP-код, который запрашивает базу данных и помещает данные в формат JSON.

<?php 
$con = mysql_connect("localhost","root","raspberry"); 

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

mysql_select_db("xbee", $con); 

$result = mysql_query("SELECT time, temperature FROM data WHERE time >= DATE_SUB(NOW(), INTERVAL 1 HOUR)"); 

$rows = array(); 
while($r = mysql_fetch_array($result)) { 

    extract($r); 
    $time = strtotime($r[0]); 
    $time *=1000; 
    $row[0] = $time; 
    $row[1] = $r[1]; 
    array_push($rows,$row); 
} 

print json_encode($rows, JSON_NUMERIC_CHECK); 

mysql_close($con); 
?> 

Это то, на что похоже мой формат JSON.

[[1414172722000,73.4],[1414172727000,73.4],[1414172732000,73.4],[1414172737000,75.2],[1414172742000,75.2],[1414172747000,75.2],[1414172753000,73.4],[1414172758000,75.2],[1414172763000,73.4],[1414172768000,75.2],[1414172773000,75.2],[1414172778000,75.2],[1414172783000,75.2],[1414172788000,73.4],[1414172793000,73.4],[1414172798000,75.2],[1414172803000,75.2],[1414172809000,75.2],[1414172814000,75.2],[1414172819000,75.2],[1414172824000,73.4],[1414172829000,75.2],[1414172834000,75.2],[1414172839000,75.2],[1414172844000,75.2],[1414172849000,75.2],[1414172854000,75.2],[1414172860000,75.2],[1414172865000,75.2],[1414172870000,75.2],[1414172875000,75.2],[1414172880000,75.2],[1414172885000,75.2],[1414172890000,75.2],[1414172895000,75.2],[1414172900000,75.2],[1414172905000,73.4],[1414172910000,75.2],[1414172916000,75.2],[1414172921000,75.2],[1414172926000,75.2],[1414172931000,75.2],[1414172936000,75.2],[1414172941000,75.2],[1414172946000,75.2],[1414172951000,75.2],[1414172956000,75.2],[1414172961000,75.2],[1414172966000,73.4],[1414172972000,75.2],[1414172977000,75.2],[1414172982000,73.4],[1414172987000,75.2],[1414172992000,75.2],[1414172997000,73.4],[1414173002000,75.2],[1414173007000,75.2],[1414173012000,75.2],[1414173017000,75.2],[1414173022000,75.2],[1414173028000,75.2],[1414173033000,75.2],[1414173038000,75.2],[1414173043000,75.2],[1414173048000,75.2],[1414173053000,75.2],[1414173058000,75.2],[1414173063000,71.6],[1414173068000,75.2],[1414173073000,75.2],[1414173079000,75.2],[1414173084000,75.2],[1414173089000,75.2],[1414173094000,75.2],[1414173099000,75.2],[1414173104000,75.2],[1414173109000,75.2],[1414173114000,75.2],[1414173119000,75.2],[1414173124000,75.2],[1414173129000,75.2],[1414173135000,75.2],[1414173140000,75.2],[1414173145000,75.2],[1414173150000,75.2],[1414173155000,75.2],[1414173160000,75.2],[1414173165000,75.2],[1414173170000,75.2],[1414173175000,75.2],[1414173180000,75.2],[1414173185000,75.2],[1414173191000,75.2],[1414173196000,75.2],[1414173201000,75.2],[1414173206000,75.2],[1414173211000,75.2],[1414173216000,75.2],[1414173221000,75.2],[1414173226000,75.2],[1414173231000,75.2],[1414173236000,75.2],[1414173241000,75.2],[1414173247000,75.2],[1414173252000,75.2],[1414173257000,75.2],[1414173262000,75.2],[1414173267000,75.2],[1414173272000,75.2],[1414173277000,75.2],[1414173282000,75.2],[1414173287000,75.2],[1414173292000,75.2],[1414173298000,75.2],[1414173303000,75.2],[1414173308000,75.2],[1414173313000,75.2],[1414173318000,75.2],[1414173323000,75.2],[1414173328000,75.2],[1414173333000,75.2],[1414173338000,75.2],[1414173343000,75.2],[1414173348000,75.2],[1414173354000,75.2],[1414173359000,75.2],[1414173364000,75.2],[1414173369000,75.2],[1414173374000,75.2],[1414173379000,75.2],[1414173384000,75.2],[1414173389000,75.2],[1414173394000,75.2],[1414173399000,75.2],[1414173404000,75.2],[1414173410000,75.2],[1414173415000,75.2],[1414173420000,75.2],[1414173425000,75.2],[1414173430000,75.2],[1414173435000,75.2],[1414173440000,75.2],[1414173445000,75.2],[1414173450000,75.2],[1414173455000,73.4],[1414173461000,75.2],[1414173466000,75.2],[1414173471000,75.2],[1414173476000,75.2],[1414173481000,75.2],[1414173486000,75.2],[1414173491000,75.2],[1414173496000,75.2],[1414173501000,73.4],[1414173506000,75.2],[1414173511000,75.2],[1414173517000,73.4],[1414173522000,75.2],[1414173527000,75.2],[1414173532000,75.2],[1414173537000,75.2],[1414173542000,75.2],[1414173547000,75.2],[1414173552000,73.4],[1414173557000,75.2],[1414173562000,75.2],[1414173567000,75.2],[1414173573000,75.2],[1414173578000,75.2],[1414173583000,75.2],[1414173590000,32],[1414173651000,75.2],[1414173711000,75.2],[1414173771000,73.4],[1414173831000,75.2],[1414173891000,73.4],[1414173951000,75.2],[1414174011000,73.4],[1414174071000,75.2],[1414174131000,73.4],[1414174191000,75.2],[1414174251000,71.6],[1414174311000,73.4],[1414174372000,73.4],[1414174432000,73.4],[1414174492000,73.4],[1414174552000,73.4],[1414174612000,73.4],[1414174672000,73.4],[1414174732000,73.4],[1414174792000,73.4],[1414174852000,73.4],[1414174912000,73.4],[1414174972000,73.4],[1414175032000,73.4],[1414175093000,73.4],[1414175153000,73.4],[1414175213000,73.4],[1414175273000,73.4],[1414175333000,73.4],[1414175393000,73.4],[1414175453000,73.4],[1414175513000,73.4],[1414175573000,73.4],[1414175633000,73.4],[1414175693000,73.4],[1414175753000,73.4],[1414175814000,73.4],[1414175874000,73.4],[1414175934000,73.4],[1414175994000,73.4],[1414176054000,73.4],[1414176114000,73.4],[1414176174000,73.4],[1414176234000,75.2],[1414176294000,75.2]] 
+0

Вы уверены, что данные, возвращаемые с сервера, правильное время? Установлен ли сервер SQL для использования другого часового пояса? Вы должны установить poperty в 'useUTC: true', чтобы все данные возвращались с сервера« как есть ». – wergeld

+0

Если я не конвертирую временную метку в UNIX и умножу на 1000 (чтобы получить миллисекунды для javascript) в скрипте PHP, формат MySQL выглядит следующим образом: [«2014-10-24 15:54:00», 73.4], ["2014-10-24 15:55:00", 73.4] ... Я не понимаю, когда я устанавливаю эту глобальную опцию useUTC true для false. Минуты/секунды времени выглядят отлично в Highcharts, его часы просто стабилизируются на 4 часа. Мне интересно, если это часовая тема, но я не уверен, где эта проблема. – elimenohpee

ответ

0

Я нашел решение, не уверен, что это самый элегантный, но он дает правильные результаты. Похоже, что при использовании преобразования strtotime в PHP он использовал часовой пояс по умолчанию GMT. В PHP-скрипте я добавил date_default_time_set ('UTC'), и он работает. Надеюсь, это поможет кому-то в будущем.

<?php 
$con = mysql_connect("localhost","root","raspberry"); 

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

mysql_select_db("xbee", $con); 

$result = mysql_query("SELECT time, temperature FROM data WHERE time >= DATE_SUB(NOW(), INTERVAL 1 HOUR)"); 

$rows = array(); 
while($r = mysql_fetch_array($result)) { 

    date_default_timezone_set('UTC'); 
    extract($r); 
    $time = strtotime($r[0]); 
    $time *=1000; 
    $row[0] = $time; 
    $row[1] = $r[1]; 
    array_push($rows,$row); 
} 

print json_encode($rows, JSON_NUMERIC_CHECK); 

mysql_close($con); 
?> 
Смежные вопросы