2011-07-31 4 views
2

기본적으로 데이터베이스에서 데이터를 가져오고 JSON, jQuery 및 FLOT을 사용하여 그래프로 구문 분석하려는 보고서 스크립트를 작성하고 있습니다.JSON, PHP, FLOT 및 jQUERY

데이터를 JSON에 가져 왔지만 그래프가 절반 생성되지만 정확한 데이터 (또는 해당 데이터)가 채워지지 않습니다. 여기

는 jQuery 코드이다

$(document).ready(function(){ 
var options = { 
    legend: { 
     show: false, 
     margin: 10, 
     backgroundOpacity: 0.5 
    }, 
    points: { 
     show: true, 
     radius: 3 
    }, 
    lines: { 
     show: true 
    } 
}; 

var plotarea = $("#plotarea"); 
plotarea.css("height", "250px"); 
plotarea.css("width", "500px"); 

$('button[name="getJSON"]').click(function(){ 
    $.ajax({ 
     url: 'reports.php?r=1', 
     dataType: 'json', 
     success: function(data){ 
      $.plot(plotarea , data, options); 
     } 
    }); 
}); 

}); 마침내 내가를 생성 할 때 내가 무엇을 얻을

[{"label":"25-07-2011","data":{"25-07-2011":"27"}},{"label":"26-07-2011","data":{"26-07-2011":"27"}},{"label":"27-07-2011","data":{"27-07-2011":"9"}},{"label":"28-07-2011","data":{"28-07-2011":"17"}},{"label":"29-07-2011","data":{"29-07-2011":"18"}},{"label":"30-07-2011","data":{"30-07-2011":"13"}},{"label":"31-07-2011","data":{"31-07-2011":"3"}}] 

그리고 :

여기
$r = addslashes($_GET['r']); 

      if(!$r){ 
       die('Incorrect Value for \'r\' was set'); 
      }      

      $sqlQuery = mysql_query(sprintf(
       "SELECT DATE_FORMAT(FROM_UNIXTIME(`date_registration`), '%%d-%%m-%%Y') AS `date`, COUNT(1) AS `count` 
       FROM `crowdcube_users` 
       WHERE `date_registration` BETWEEN %d AND %d 
       GROUP BY `date`", 
       $startDate, 
       $endDate 
      )); 



      while($row = mysql_fetch_assoc($sqlQuery)){         
       $newData[] = array(
        'label' => $row['date'], 
        'data' => array(
            $row['date'] => $row['count'] 
           ) 
        ); 
      } 

      //Encode the array into JSON data 
      echo json_encode($newData); 

는 JSON 배열입니다 : 여기

은 내가 아는 한 제대로 작동 PHP 코드입니다 그래프 : 내가 무슨 일을

http://i.imgur.com/tTIqs.png

을하고 있는가? 어떤 도움이라도 대단히 감사하겠습니다!

미리 감사드립니다.

답변

2

오른쪽에서 Flot FAQ : 데이터 유형을 확인하십시오. JSON의 경우 "27"27과 다릅니다.

Q : JSON 데이터를 소스로 사용하는 경우 Flot이 작동하지 않습니다.

A : 실제로 Flot은 JSON 데이터를 좋아합니다. 형식이 잘못되었습니다. [[ "0", "-2.13"], [ "5", "4.3"]처럼 숫자 대신 문자열을 입력하지 않았는지 다시 확인하십시오. 이것은 가장 일반적인 실수이며 자바 스크립트가 자동으로 변환을 수행 할 수 있기 때문에 오류가 바로 표시되지 않을 수 있습니다.

또한 데이터 구조는 Flot이 기대하는 것과 다릅니다. 특히, 데이터 시퀀스는 데이터 포인트의 목록이 있어야 하나 하나 좌표의 목록입니다

{data:[[0,-2.13],[5,4.3],.....]} 

시간 기반 데이터에 관해서는, 당신은 자바 스크립트의 타임 스탬프를 사용할 필요는, 그 신기원으로부터의 밀리 초 단위의 숫자입니다. 대부분의 경우 유닉스 타임 스탬프에 1000을 곱한 것입니다.

+0

방금 ​​타입 변환을 추가 했으므로 이제는 (int) $ row [ 'count']이고 여전히 동일합니다 : / – DarkMantis