4

私は、PHP と MySQL のクエリについてはまったくの初心者です。MySQL データベースから Google チャートを作成しようとしていますが、Google で何時間も検索した後、必要なものが見つかりませんでした。ただし、役立つ可能性のある例を見つけましたが、それでも思い通りにすることはできません。これが私のテーブルの例です。

    Apple   | Orange  | Strawberry
    --------------------------
    Like    | Like    | Like
    Dislike | Like    | Like
    Dislike | Dislike | Like
    Like    | Dislike | Dislike
    Like    | Like    | Like

DislikeLike とfor AppleOrangeandの数を数えたいと思いますStrawberry。グラフでは、これら 3 つの果物が好きな人、嫌いな人の数を表示したいと考えています。

ここに私が見てきたコードがありますが、それを攻撃する方法はまだわかっていません。

    $query = mysql_query('SELECT * FROM data');

    $table = array();
    $table['cols'] = array(
        array('label' => 'cas', 'type' => 'string'),
        array('label' => 'data', 'type' => 'number')
    );

    $rows = array();
    while($r = mysql_fetch_assoc($query)) {
        $temp = array();
        $temp[] = array('v' => $r['cas']);
        $temp[] = array('v' => (int) $r['data']);

    $rows[] = array('c' => $temp);
    }

    $table['rows'] = $rows;

    $jsonTable = json_encode($table);

    echo $jsonTable;

どんな例でも役に立ちます!ありがとうございました。

4

2 に答える 2

4

これをあなたのPHPとして試してください:

$query = mysql_query("
    SELECT
        'Like' as 'preference',
        SUM(IF(Apple = 'Like', 1, 0)) as Apple,
        SUM(IF(Orange = 'Like', 1, 0)) as Orange,
        SUM(IF(Strawberry = 'Like', 1, 0)) as Strawberry
    FROM data
    UNION
    SELECT
        'Dislike' as 'preference',
        SUM(IF(Apple = 'Dislike', 1, 0)) as Apple,
        SUM(IF(Orange = 'Dislike', 1, 0)) as Orange,
        SUM(IF(Strawberry = 'Dislike', 1, 0)) as Strawberry
    FROM data
");

$table = array();
$table['cols'] = array(
    array('label' => 'preference', 'type' => 'string'),
    array('label' => 'Apple', 'type' => 'number'),
    array('label' => 'Orange', 'type' => 'number'),
    array('label' => 'Strawberry', 'type' => 'number')
);

$rows = array();
while($r = mysql_fetch_assoc($query)) {
    $temp = array();
    $temp[] = array('v' => $r['preference']);
    $temp[] = array('v' => (int) $r['Apple']);
    $temp[] = array('v' => (int) $r['Orange']);
    $temp[] = array('v' => (int) $r['Strawberry']);

    $rows[] = array('c' => $temp);
}

$table['rows'] = $rows;

$jsonTable = json_encode($table);

echo $jsonTable;

SQL は 2 行のデータを返す必要があります。1 行は好きなものの合計で、もう 1 行は嫌いなものの合計です。このデータは、Google Visualization API の DataTable 形式に解析され、JSON 文字列としてエコーされます。これは、グラフの AJAX データ ソースとして使用するのに適していますが、少し変更すると、グラフを描画するための JavaScript にデータを直接出力するのに適しています。

于 2013-08-17T22:53:00.720 に答える