使用PHP和MySql创建图表

时间:2011-10-24 19:09:52

标签: php mysql database

我有一个包含下表的数据库:

id    value
-----------
1     yes
2     no
3     no
4     maybe

我正在使用一些简单的PHP来记录在投票网站上输入的选项。用户选择一个单选框并将其输入上表。但是,我想让它更灵活一些。我创建了一个简单的后端,允许管理员用户添加或删除轮询选项。当选择的数量不恒定时,我会在前端展示每个选项的投票数量?我知道如果民意调查选择是静态的,我可以很容易地做到这一点,但由于后端用户将改变选择,我怎么能动态显示结果呢?

3 个答案:

答案 0 :(得分:0)

不要担心选择或选择的数量,抓住所有选票/选择并迭代它们并将它们无差别地添加到数组中:http://codepad.org/LWPyuTqj

$total = array();
$votes = array(1=>'yes',2=>'no',3=>'no',4=>'maybe');
foreach($votes as $vote) {
    if (!isset($total[$vote]))
        $total[$vote] = 1; 
    else
        $total[$vote] += 1;
 }
 print_r($total);

答案 1 :(得分:0)

我不确定你在问什么。你正在寻找COUNT吗?

答案 2 :(得分:0)

我建议使用google graph API。这真的很容易!

http://code.google.com/apis/chart/interactive/docs/gallery/piechart.html

使用上面链接上的第一个示例动态生成代码。首先选择值。这假设有一个问题ID,因此您可以与问题相关联。在这种情况下,id 1。

$result = mysql_query('SELECT value,COUNT(*) as num FROM choises WHERE question_id = 1  GROUP BY value');

然后用PHP循环遍历数据

$results = array();
while ($row = mysql_fetch_assoc($result)){
    $results[$row['value']] = $num;
}

通过这个你可以生成图表:

echo 'data.addRows('.count($results).');';
$i = 0;
foreach ($results as $value => $num){

    echo'
        data.setValue('.$i.', 0, "'.$value.'");
        data.setValue('.$i.', 1, '.$num.');
    ';
    $i++;
}