我正在参加比赛,看看结果我做了这个简短的代码:
date_default_timezone_set('America/New_York');
echo "Results tallied at ". date("g:i:s A")."<br /><br />";
$names = array('contestant1','contestant2','contestant3'...); //10 entries
$plots = array();
foreach ($names as $name) {
$query = $this->db->getwhere('friday', array('votedon'=>$name));//CodeIgniter Active Record
$count = $query->num_rows(); //again, CodeIgniter
echo "Votes for " . ucfirst($name).": $count <br />";
$plots[]= $count;
}
$total = $this->db->count_all('friday'); //CodeIgniter
echo "<br />Total votes: $total <br />";
$highest = 5+max($plots); //make the chart look better
$url = "http://chart.apis.google.com/chart?cht=bvg&chs=900x300&chbh=40,100,40";
$par1 = "&chds=0,$highest";
$par2 = "&chl=". implode("|",$names);
$par3 = '&chd=t:'. implode(",",$plots);
$imgsrc = $url.$par1.$par2.$par3;
echo "<img src='$imgsrc' />";
因此,这会生成一个显示当前轮询结果的条形图。我想知道的是,是否有一种优雅的方式可以避免输入人们可以投票的每个独特条目。 (第4行$ names = ....)对于本次比赛,“votedon”列中有十个可能的条目名称,但如果它是用户输入的话,我想显示/计算所有可能的结果。
这样的代码会是什么样的?我是编程的新手,这样的习语有时候很难让我自己想出来。谢谢!
答案 0 :(得分:1)
查询非常简单:
SELECT votedon, count(*)
FROM VOTING_TABLE
GROUP BY votedon
现在,我不知道它是如何适合codeigniter的,但是来自php的mysql连接并不那么难,如果这确实是一种特殊的事情,那就可以了。