4

我对 PHP 和 MySQL 查询很陌生。我正在尝试从 MySQL 数据库构建 Google 图表,但在 Google 上搜索了无数小时后,我找不到我需要的东西。但是,我找到了一个可能有用的示例,但我仍然无法按照我想要的方式进行操作。这是我的桌子的一个例子。

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

我想计算有多少 Like和DislikeforApple和。在图表中,我希望它显示有多少人喜欢和不喜欢这 3 种水果。OrangeStrawberry

这是我一直在查看的代码,但我还没有弄清楚如何攻击它。

    $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 应该返回两行数据,一个是喜欢的总和,另一行是不喜欢的总和,然后将其解析为 Google Visualization API DataTable 格式并作为 JSON 字符串回显。这很适合用作图表的AJAX数据源,但稍作修改后,将适合直接将数据输出到javascript中以绘制图表。

于 2013-08-17T22:53:00.720 回答
0

“这是我一直在查看的代码,但我还没有弄清楚如何攻击它。”

那么这里是如何调试它,说这些是你正在采取的步骤。

  1. 从数据库中获取数据
  2. 创建一个数组
  3. Json 对数组进行编码
  4. 将 Json 发送到图表

尝试在上面的步骤中硬编码一个数组,暂时从等式中2.删除步骤。1

现在,从那一步开始,其余的代码是否应该如此?你能看到预期使用硬编码值的图表吗?

如果是,那么现在向后工作,var_dump()直到它与您之前的硬编码值匹配为止。

于 2013-08-17T08:58:51.437 回答