2015-06-22 2 views
0

Я хочу сделать диаграмму с базой данных mysql. У меня есть две колонки - временная метка и температура. Это формат временной шкалы - 2015-06-11 22:45:59, а температура - целая. Я не уверен, что мое преобразование метки времени в javascript правильное, у меня есть или, может быть, у меня другая ошибка. это мой код:Highstock с php и mysql

data.php

<? 
define('DBHOST','localhost'); 
define('DBUSER','root'); 
define('DBPASS','...'); 
define('DBNAME','diplomna2'); 

try { 

    //create PDO connection 
    $db = new PDO("mysql:host=".DBHOST.";port=3306;dbname=".DBNAME, DBUSER, DBPASS); 
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

} catch(PDOException $e) { 
    //show error 
    echo '<p class="bg-danger">'.$e->getMessage().'</p>'; 
    exit; 
} 
$stmt = $db->query('SELECT * FROM temperature'); 

$res=array(); 
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 
    $row['timestamp'] = strtotime($row['timestamp']); 
    $row['timestamp'] *=1000; 

    echo $res="[".$row['timestamp'] . ',' . $row['temperature'] ."]"; 

} 
?> 

это выход:

[1434051959000,25][1434051969000,26][1434051979000,26][1434051990000,28][1434052000000,27][1434052024000,25][1434052034000,24][1434052044000,23] 

HTML файл:

<!DOCTYPE HTML> 
<html> 
<head> 
    <script type="text/javascript" src="js/jquery-1.7.1.min.js" ></script> 
    <script src="http://code.highcharts.com/stock/highstock.js"></script> 
    <script src="http://code.highcharts.com/stock/modules/exporting.js"></script> 


    <script type="text/javascript"> 
     $(function() { 
      $.getJSON('data.php', function(data) { 

       // Create the chart 
       $('#container').highcharts('StockChart', { 


        rangeSelector : { 
         inputEnabled: $('#container').width() > 480, 
         selected : 1 
        }, 

        title : { 
         text : 'Temperature' 
        }, 

        series : [{ 
         name : 'temperature', 
         data : data, 
         type : 'areaspline', 
         threshold : null, 
         tooltip : { 
          valueDecimals : 2 
         }, 
         fillColor : { 
          linearGradient : { 
           x1: 0, 
           y1: 0, 
           x2: 0, 
           y2: 1 
          }, 
          stops : [ 
           [0, Highcharts.getOptions().colors[0]], 
           [1, Highcharts.Color(Highcharts.getOptions().colors[0]).setOpacity(0).get('rgba')] 
          ] 
         } 
        }] 
       }); 
      }); 
     }); 
    </script> 
</head> 
<body> 

<div id="container" style="height: 400px; min-width: 310px"></div> 
</body> 
</html> 

ответ

1

Правильный способ сделать JavaScript понять ваш PHP массив is json_encode()

Изменение кода блока рядом while к

$res = []; 

while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 
    $res[] = [ strtotime($row['timestamp'])*1000, $row['temperature'] ]; 
} 

echo json_encode($res); 
+0

Спасибо за быстрый ответ. Я изменил код, но он не работает снова. – Supreme

+0

какая ошибка вы получаете, зайдите в консоль вашего браузера. – Viral

+0

> Uncaught TypeError: Не удается прочитать свойство 'addEvent' неопределенной > неперехваченным TypeError: Не удается прочитать свойство '' fireEvent неопределенной > test_temperature.php: 25 неперехваченным SyntaxError: Неожиданный идентификатор – Supreme