现在可能是本教程最有趣的一部分:第3条。很明显地,一旦你有用户和投票到来,你会打算看看投票是如何分布的报告。这个会涉及到连接至数据库,使用问题ID号得到正确的记录集,计算投票的总数以及每一选项在所有投票中的比例,然后在一个表格中显示该信息。
这里是在PHP中其看上去的样子:
下面是输出可能看上去的样子的一个例子:<html> <head><basefont face = 'Arial'></head> <body> <h2>Administration</h2> <?php if ($_GET['qid'] && is_numeric($_GET['qid'])) { // include configuration file include('config.php'); // open database connection $connection = mysql_connect($host, $user, $pass) or die('ERROR: Unable to connect!'); // select database mysql_select_db($db) or die('ERROR: Unable to select database!'); // get the question $query = "SELECT qtitle FROM questions WHERE qid = '".$_GET['qid']."'"; $result = mysql_query($query) or die("ERROR: $query. ".mysql_error()); $row = mysql_fetch_object($result); echo '<h3>'.$row->qtitle.'</h3>'; // reset variables unset($query); unset($result); unset($row); // find out if any votes have been cast $query = "SELECT qid, SUM(acount) AS total FROM answers GROUP BY qid HAVING qid = ".$_GET['qid']; $result = mysql_query($query) or die("ERROR: $query. ".mysql_error()); $row = mysql_fetch_object($result); $total = $row->total; // if votes have been cast if ($total > 0) { // reset variables unset($query); unset($result); unset($row); // get individual counts $query = "SELECT atitle, acount FROM answers WHERE qid = '".$_GET['qid']."'"; $result = mysql_query($query) or die("ERROR: $query. ".mysql_error()); // if records present if (mysql_num_rows($result) > 0) { // print vote results echo '<table border=1 cellspacing=0 cellpadding=15>'; // iterate through data // print absolute and percentage totals while($row = mysql_fetch_object($result)) { echo '<tr>'; echo '<td>'.$row->atitle.'</td>'; echo '<td>'.$row->acount.'</td>'; echo '<td>'.round(($row->acount/$total) * 100, 2).'%</td>'; echo '</tr>'; } // print grand total echo '<tr>'; echo '<td><u>TOTAL</u></td>'; echo '<td>'.$total.'</td>'; echo '<td>100%</td>'; echo '</tr>'; echo '</table>'; } } // if votes have not been cast else { echo 'No votes cast yet'; } // close connection mysql_close($connection); } else { die('ERROR: Data not correctly submitted'); } ?> </body> </html>
该脚本view.php以与delete.php非常相同的方式自admin.php激活(问题ID号作为输入参数传递给view.php脚本然后该ID被用于获取对应的答案以及每个问题所采集的投票)。一旦获得答案集,递交的投票总数就可以被计算出来,然后可以获得每个选项占总票数的百分比。该数据然后以简单的HTML表格显示出来。
当将绝对数据转换为百分比时,你需要小心(如果仍然没有投票的话,那么你会获得一些十分奇怪的除零错误)。为了避免这种情况,脚本中的第二个查询使用MySQL的SUM()函数和GROUP BY字句来获得特殊问题的投票总数。如果该总数为0,那么仍然没有投票,然后一条带有这种意思的消息得到显示;如果该总数大于0,那么就计算各自的百分比。