2011-07-31 12 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); 
     } 
    }); 
}); 

})。ここで

は、私の知る限りでは正常に動作しているPHPコードである:ここで

$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配列である:

[{"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"}}] 

そして最後に、これは私が発生したときに、私が得るものですグラフ:

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

私が間違って何をしているのですか?どんな助けでも大歓迎です!

ありがとうございます!

答えて

2

Flot FAQから:あなたのデータタイプをチェックしてください。 JSONでは、"27"27と同じではありません。

Q:JSONデータをソースとして使用している場合、Flotは機能しません。

A:実際、FlotはJSONデータを愛していますが、フォーマットが間違っています。 [["0"、 "-2.13"]、["5"、 "4.3"]のように数字の代わりに文字列を入力していないことを再度確認してください。 これはよくある間違いで、 JavaScriptは自動的に 変換を実行できるため、エラーがすぐに表示されないことがあります。

また、データ構造はFlotの予想とは異なります。具体的には、データ系列がデータポイントのリストである必要があり、それぞれが座標のリストである:時間ベースのデータについては

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

、あなたはJavascriptのタイムスタンプを使用する必要があり、それはエポックからのミリ秒数です。ほとんどの場合、Unixのタイムスタンプに1000を掛けたものにすぎません。

+0

今は型キャストを追加したので、現在は($)[行数]です。 – DarkMantis