我是PHP和MySQL查询的新手。我正在尝试从MySQL数据库构建一个谷歌图表,但在谷歌搜索无数个小时后,我找不到我需要的东西。但是我发现了一个可能有用的例子,但我仍然不能按照我想要的方式进行。这是我桌子的一个例子。
Apple | Orange | Strawberry
--------------------------
Like | Like | Like
Dislike | Like | Like
Dislike | Dislike | Like
Like | Dislike | Dislike
Like | Like | Like
我想计算Dislike
,Apple
和Orange
的赞和Strawberry
的数量。在图表中,我希望它显示有多少人喜欢和不喜欢这三种水果。
这是我一直在看的代码,我还想出了如何攻击它。
$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;
任何例子都会有所帮助!谢谢。
答案 0 :(得分: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中绘制图表。
答案 1 :(得分:0)
“这是我一直在看的代码,我还在想办法 攻击它。“
这里有如何调试它,说这些是您正在采取的步骤。
在上面的步骤2.
尝试并对数组进行硬编码,暂时从等式中删除步骤1
。
现在,从该步骤开始,其余代码是否应该如此?你能看到使用硬编码值的图表吗?
如果是,那么现在好了,var_dump()
数据直到它与之前的硬编码值匹配为止。