投票功能在日常上网中随处可见,特别是在BBS中。它不但直观的反映了网友对某种事物的看法,而且能很好的聚集人气。
那么就开始对投票这个功能模块进行设计。
第一让我们看看流程图:

这是个很简单的应用系统就是负责写入数据库在显示出来给用户
现在开始实现这个功能:
首先我在MYSQL数据库中建立如下的表



这三个分别对已投票项目表,题目表,和用户表。建立用户表是为了防止重复投票的发生。
数据库建立好玩 就开始CODE阶段了。
在这之前看看让我先看看投票的流程

知道流程后那么CODE就很快了。就是完成数据库的存储而已。再这里要加入个处理程序 来计数。
关键代码如下:
- $SQLStr = "SELECT * FROM votesubject WHERE v_id = '$v_id'";
- $res = db_query($SQLStr);
- $SQLStr2 = "SELECT * FROM vote WHERE v_id = '$v_id'";
- $res2 = db_query($SQLStr2);
- $SQLStr = "UPDATE vote SET t_count = t_count+1 WHERE t_id = '$t_id'";
- db_query($SQLStr);
效果图

好了 这个完成后就是怎么显示出来给用户看结果了。
那么我来看看这个显示的过程

根据这个流程CODE
关键代码如下
- $SQLSum = "SELECT SUM(t_count) from vote WHERE v_id = '$v_id'";
- $res = db_query($SQLSum);
- $row = db_fetch_array($res);
- $countall = $row[0];
- $SQLStr = "SELECT * FROM vote WHERE v_id = '$v_id'";
- $res = db_query($SQLStr);
- $per = floor(($row['t_count']/$countall)*100) . "%";
- echo "<tr>";
- echo "<td width='10' align='center'>" . $row['t_id'] . "-</td>";
- echo "<td width='270'>" . $row['t_name'] . "</td>";
- echo "<td width='100'><img src='images/bar1.gif' height='10' width='" . $per . "'></td>";
- echo "<td width='40' align='center'>" . $per . "</td>";
- echo "<td width='40' align='center'>" . $row['t_count'] . "</td>";
效果:

在这里基本就完成了 等等还有点 那就是重复投票的问题
那么加上了检查程序来检查用户投票
让我来看看这个的工作流程

这个就很好写了
- $TIME_LIMIT = 30;
- $voter_ip = $REMOTE_ADDR;
- $SQLStr = "SELECT * FROM voteuser WHERE v_id = '$v_id' AND u_ip = '$voter_ip'";
- $SQLStr .= "AND u_time + INTERVAL $TIME_LIMIT MINUTE > now()";
- $res = db_query($SQLStr);
- if (db_num_rows($res)>0)
- {
- echo "<script>";
- echo "alert(/"您不可重复投票/");";
- echo "location.href = /"vote.php?v_id=" . $v_id . "/";";
- echo "</script>";
- break;
- }
- else
- {
- $SQLStr = "INSERT INTO voteuser (v_id, u_ip, u_time) ";
- $SQLStr .= "VALUES ('$v_id', '$voter_ip', now())";
- db_query($SQLStr);
- }
- ?>
3287

被折叠的 条评论
为什么被折叠?



