2011-10-14 2 views
2

가 나는 Highchart (http://highcharts.com)Highchart - 디스플레이 JSON 데이터 - MYSQL/PHP

문제에 JSON 데이터를 표시하려고하면 x 축에 대한 데이터입니다. 나는 정말로 xAxis에 표시되도록 날짜 형식을 얻는 방법을 혼란 스럽습니다.

DB에서 밀리 초로 날짜 데이터를 변환해야한다는 것을 알았습니다.

누군가 실현 방법을 알고 있습니까? 이것은 JSON을 생성하는 PHP는

var chart; 

chart = new Highcharts.Chart({ 
    chart: { 
      renderTo: 'container', 
      defaultSeriesType: 'spline', 
      events: { 
       load: requestData 
      }}, 
    xAxis: { 
     type: 'datetime' 
     }, 
     yAxis: { 
     title: { 
      text: 'Value' 
     }, 
     plotLines: [{ 
      value: 0, 
      width: 1, 
      color: '#808080' 
     }] 
     }, 

    series: [{ 
     name: 'Random data', 
     data: [] 
     }] 
}); 



function requestData() { 
    $.ajax({ 
     url: '../controller/charter/data.php', 
     datatype: "json", 
     success: function(data) { 

      alert(data); 

      chart.series[0].setData(data); 

     }, 
     cache: false 
    }); 
} 

:

내 자바 스크립트입니다

<?php 
header("Content-type: text/json"); 
// connect to the database 
$dbhost = "localhost"; 
$dbuser = "cccccc"; 
$dbpassword = "ccccccc"; 
$database = "ccccccccc"; 
$tablename = "ccccccc"; 
$db = mysql_connect($dbhost, $dbuser, $dbpassword) 
or die("Connection Error: " . mysql_error()); 

mysql_select_db($database) or die("Error conecting to db."); 
$result = mysql_query("SELECT COUNT(*) AS count FROM $tablename"); 
$row = mysql_fetch_array($result,MYSQL_ASSOC); 

$SQL = "SELECT aed,savedate FROM $tablename ORDER BY savedate"; 

$result = mysql_query($SQL) or die("Couldn?t execute query.".mysql_error()); 

$i=0; 
while($row = mysql_fetch_array($result,MYSQL_ASSOC)) { 

    $row[aed] = (int) $row[aed]; 

    $rows[$i]=array($row[savedate],$row[aed]); 

    $i++; 
} 

echo json_encode($rows); 

; 
?> 

JSON 데이터 : 데이터를 분석하는 시도의

[["2011-03-20 18:53:47",40],["2011-03-21 18:53:47",300],["2011-03-22 18:53:47",450],["2011-03-23 18:53:47",40],["2011-03-24 18:53:47",300],["2011-03-25 18:53:47",450],["2011-03-26 18:53:47",40],["2011-03-29 18:53:47",120],["2011-03-29 18:53:47",80],["2011-03-29 18:53:47",300],["2011-03-29 18:53:47",450],["2011-03-29 18:53:47",40],["2011-03-29 18:53:47",100],["2011-03-29 18:53:47",120],["2011-03-29 18:53:47",80],["2011-03-29 18:53:47",300],["2011-03-29 18:53:47",450],["2011-03-29 18:53:47",100],["2011-03-29 18:53:47",40],["2011-03-29 18:53:47",120],["2011-03-29 18:53:47",80],["2011-03-29 18:53:47",300],["2011-03-29 18:53:47",450],["2011-03-29 18:53:47",40],["2011-03-29 18:53:47",100],["2011-03-29 18:53:47",120],["2011-03-29 18:53:47",80],["2011-03-29 18:53:47",300],["2011-03-29 18:53:47",450],["2011-03-29 18:53:47",40],["2011-03-29 18:53:47",300],["2011-03-29 18:53:47",450],["2011-03-29 18:53:47",40],["2011-03-29 18:53:47",300],["2011-03-29 18:53:47",450],["2011-03-29 18:53:47",100]] 

답변

3

먼저 (JSON)을 인수로 전달한 후 setData -

,210
chart.series[0].setData(eval('(' + data + ')')); 

업데이트 :

[["2011-03-20 18:53:47",40],["2011-03-21 18:53:47",300],...] 

"2011-03-20 18:53:47"는 날짜 시리즈 유효한 x 값이 아닙니다. 밀리 세컨드 단위의 날짜를 나타내는 숫자가 숫자 여야합니다.

당신은 다음 중 하나를 변경하여 문제를 해결할 수 있습니다 -

  1. 자바 스크립트 (클라이언트 측).
  2. PHP 코드에서
  3. SQL 쿼리에 있습니다.

않는 중 당신의 SQL 쿼리 나 PHP, 당신은 자바 스크립트 엉망으로하고 JSON 같은 것을 볼 것입니다하지 않도록 - 그럼 그건 그냥 eval을 한 후

[[1318605385652, 40],[1318605385652,300],...] 

합니다.

+0

이렇게하면 아무 것도 표시되지 않습니다. –

+0

@JanineKroser : 오, JSON 데이터를 업데이트 하시겠습니까? –

+0

예 JSON 데이터를 업데이트하고 전에 문제를 해결했지만 ... 이제 datetime을 데이터베이스에서 밀리 초로 변환하려고합니다 ... 어떤 생각입니까? :-) –