0

ハイチャートを使用してバブル チャートを作成しています。これが私のデータのサンプルです:

  name  | price | quantity | count
--------+-------+----------+-------
 Female |     2 |        3 |     5
 Female |     3 |       12 |    10
 Female |     5 |        6 |    15
 Female |     1 |        7 |    25
 Male   |     3 |        5 |     7
 Male   |     2 |        9 |    11
 Male   |     5 |        7 |    23
 Male   |     4 |        4 |    14

PHP を使用してデータをクエリし、JSON にエンコードしています。

$query = "SELECT name, price, quantity, count FROM sales WHERE id = $1";

$result = pg_prepare($db, "report", $query);
$result = pg_execute($db, "report", array($ID));

while ($row = pg_fetch_array($result, NULL, PGSQL_ASSOC))
{
        $response['xdata'][$row['name']]['x'][] = $row['price'];
        $response['xdata'][$row['name']]['y'][] = $row['quantity'];
        $response['xdata'][$row['name']]['radius'][] = $row['count'];
}

echo json_encode($response);

ただし、グラフを適切にプロットするために必要な JSON 形式は次のとおりです。

series: [{
    name: 'Female',
    marker:{
        symbol:'circle',
        fillColor:'rgba(24,90,169,.5)',
        lineColor:'rgba(24,90,169,.75)',
        lineWidth:1,
        color:'rgba(24,90,169,1)',
        states:{
            hover:{
                enabled:false
            }
        }
    },
    data: [{x:2,y:3,marker:{radius:5}},
           {x:3,y:12,marker:{radius:10}},
           {x:5,y:6,marker:{radius:15}},
           {x:1,y:7,marker:{radius:25}}]
    },{
    name: 'Male',
    marker:{
        symbol:'circle',
        fillColor:'rgba(238,46,47,.5)',
        lineColor:'rgba(238,46,47,.75)',
        lineWidth:1,
        color:'rgba(238,46,47,1)',
        states:{
            hover:{
                enabled:false
            }
        }
    },
    data: [{x:3,y:5,marker:{radius:7}},
           {x:2,y:9,marker:{radius:11}},
           {x:5,y:7,marker:{radius:23}},
           {x:4,y:4,marker:{radius:14}}]
   }]

私の質問は、$queryPHPで正しく処理して上記のように目的のJSON形式を取得し、それを次のように渡すにseriesはどうすればよいoptionsBubble.series = data.xdataですか? どうもありがとう!

4

2 に答える 2

2

最初に、db に関連しない部分を PHP 構造に組み込む必要があります。

$data = array(
   0 => array(
        'name' => 'Female',
        'marker' => array (
             'symbol': 'circle'
             etc....),
        'data' => array() // database insertion occurs here
        ),
   1 => array(
        'name' => 'Male',
        etc...
        )
);

$locations = array('Female' => 0, 'Male' => 1, etc...) // reverse map your 'name' fields

while(...) {
     $data[$locations[$row['name']]][data]['x'][] = $row['price'];
     $data[$locations[$row['name']]][data]['y'][] = $row['quantity'];
           ^^^^^^^^^^^^^^^^^^^^^^^^--- reverse lookup to get right array index for 'name'
}
于 2012-09-10T03:28:58.813 に答える
0

まず、SQL クエリ、特に の部分を確認することをお勧めしますWHERE id=$1。私が間違っていなければ (そしてこれについてはかなり確信しています)、クエリは 1 行を返しますが、おそらく必要なものほど多くはありません。WHERE句を削除して、問題が解決するかどうかを確認することをお勧めします。

そうでない場合は、私に連絡してください。他に何が見えるかを見て、そこから先に進むことができます。

于 2012-09-10T03:30:03.790 に答える