0

HighCharts 棒グラフを使用して、mysql 結果セットのデータを棒グラフにプロットしています。

クエリの結果セットは次のようになります。

Name       Expense
-----------------
July       700.0000
August     450.0000  
September  1700.0000

seriesHighChartsのプロパティは、グラフをプロットするために以下の形式のデータを必要とします

[
 {name:"July",data:[700.0000]},
 {name:"August",data:[450.0000]},
 {name:"September",data:[1700.0000]}
] 

そこで、を使用して結果セットを JSON オブジェクトに変換することを考えましたjson_encode($row)。しかし、次の出力が得られました。

[{"name":"July","data":"700.0000"},
 {"name":"August","data":"450.0000"},
 {"name":"September","data":"1700.0000"}] 

疑問:

  1. HighCharts のシリーズ プロパティで必要とされるのとまったく同じ形式で結果セットを取得/変換する方法はありますか?
  2. また、php ブロックで作成されたオブジェクトを直接 JavaScript に使用できますか? 結果セットからオブジェクトを作成するとします$jsonNameData。次に、JavaScriptで次のように使用できますか

    series: <? echo $jsonNameData ?>

編集:

次のようにして、Q1を解決できました。

$count = 0;
$strSeries = "[";
while($r = mysql_fetch_assoc($result)) {

   if($count == 0){
       $strSeries .= "{name:'" . $r['name'] . "',";
       $strSeries .= "data:[" . $r['data'] . ']}';
       $count = 1;
   }
   else {
       $strSeries .= ",{name:'" . $r['name'] . "',";
       $strSeries .= "data:[" . $r['data'] . ']}';
   }
 $rows[] = $r;
}
$strSeries .= "]";

に必要な文字列を取得しました$strSeries

さて、問題は2番目の質問です。$strSeriesの値をjavascriptの変数に割り当てましたが、その変数を次のように使用すると

series: variableName

変数が適切な値を持っていても (アラートでチェック)、グラフが正しくプロットされていません。

4

3 に答える 3

1

以下のコードを実行する機会はありませんでしたが、これは機能するか、これと非常によく似たものになるはずです

$series=array();
while($item = mysql_fetch_assoc($result)) {
  $serie=array(
     "name" => $item['name'],
     "data" => array(floatval($item['data']))
  );
  array_push($series,$serie);
}
echo json_encode($series);

アドバイスはjson_encode()、json化を行うために常に固執することです。json_encode が特に配列でどのように機能するかを学ぶために、リファレンス ページのこの例を参照することをお勧めします。

編集: 2 番目の質問に答えるには。javascript コンソールでハイチャート エラー #14 が表示されることがありますか? この質問Highcharts return error 14をご覧ください

PS 複数の質問を 1 つにまとめず、別々に投稿してください。また、javascript コンソールや SO 検索などのツールをより効果的に使用してください。

于 2012-09-21T06:18:58.163 に答える
0
select concat('{name:"', name, '",data:[', expense, ']}') as foo
from bar
于 2012-09-20T21:31:54.503 に答える
0

私はこれを試してみます:

$jsonObj = '[';
foreach($mysqlResul as $item){
    $jsonObj .= '{"name":"'.$item['name'].'","data":['.$item['data'].']},';
}
// strip off last comma
$jsonObj = substr(0,strlen($jsonObj)-1,$jsonObj);
$jsonObj .= ']';
于 2012-09-20T21:20:47.153 に答える