PHP新手上路(九) 投票系统
发布:smiling 来源: php粉丝网 添加日期:2013-11-17 浏览: 评论:0
建设一个简单交互的网站(五)
8. 投票系统
在许多时候,我们需要收集上网者和网友们的意见。例如:新版页面与旧版页面的比较;对某一事情的看法;对体育比赛结果的预测等等。这时候,你需要一个非常有效的网上调查系统。
8.1 投票系统(mypolls.php3):
- <?
- $status=0;
- if(isset($polled)&&($polled=="c-e")){
- $status=1;
- }
- #echo "$status";
- if(isset($poll)&&($status==0)){
- setcookie("polled","c-e",time() 86400,"/");#time=24h
- }
- ?>
- <html>
- <head>
- <title>新版页面调查</title>
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
- <style type="text/css">
- <!--
- .tb { border="1" bordercolor="#009933" cellspacing="0" font-size: 9pt; color: #000000}
- .head { font-family: "宋体"; font-size: 12pt; font-weight: bold; color: #009933; text-decoration: none}
- .pt9 { font-size: 9pt}
- a.p9:link { font-size: 9pt; color: #000000; text-decoration: none}
- a.p9:visited { font-size: 9pt; color: #000000; text-decoration: none }
- a.p9:hover { font-size: 9pt; color: #FF0000; text-decoration: underline}
- a.p9:active { font-size: 9pt; color: #FF0000; text-decoration: underline }
- -->
- </style>
- </head>
- <body bgcolor="#FFFFFF">
- <div class="head">与旧版页面相比较您觉得新版页面:</div><br>
- <?
- if(!isset($submit)){
- ?>
- <form action="myPolls.php3" method="get">
- <input type="radio" name="poll_voteNr" value="1" checked >
- <span class="pt9">信息量更大</span> <br>
- <input type="radio" name="poll_voteNr" value="2" >
- <span class="pt9">网页更精美</span> <br>
- <input type="radio" name="poll_voteNr" value="3" >
- <span class="pt9">没什么改进</span> <br>
- <input type="radio" name="poll_voteNr" value="4" >
- <span class="pt9">其它</span> <br>
- <input type="submit" name="submit" value="OK">
- <input type="hidden" name="poll" value="vote">
- <A HREF="myPolls.php3?submit=OK" class="p9">查看调查结果</A>
- </form>
- <?
- /*
- 如果想增加其它的选项可直接加上即可
- */
- }else{
- $descArray=array(1=>"信息量更大",
- 2=>"网页更精美",
- 3=>"没什么改进",
- 4=>"其它"
- );
- $poll_resultBarHeight = 9; // height in pixels of percentage bar in result table
- $poll_resultBarScale = 1; // scale of result bar (in multiples of 100 pixels)
- $poll_tableHeader="<table border=1 class="tb">";
- $poll_rowHeader="<tr>";
- $poll_dataHeader="<td align=center>";
- $poll_dataFooter="</td>";
- $poll_rowFooter="</tr>";
- $poll_tableFooter="</table>";
- $coutfile="data.pol";
- $poll_sum=0;
- // read counter-file
- if (file_exists( $coutfile))
- {
- $fp = fopen( $coutfile, "rt");
- while ($Line = fgets($fp, 10))
- {
- // split lines into identifier/counter
- if (ereg( "([^ ]*) *([0-9]*)", $Line, $tmp))
- {
- $curArray[(int)$tmp[1]] = (int)$tmp[2];
- $poll_sum =(int)$tmp[2];
- }
- }
- // close file
- fclose($fp);
- }else{//
- for ($i=1;$i<=count($descArray);$i ){
- $curArray[$i]=0;
- }
- }
- if(isset($poll)){
- $curArray[$poll_voteNr] ;
- $poll_sum ;
- }
- echo $poll_tableHeader;
- // cycle through all options编历数组
- reset($curArray);
- while (list($K, $V) = each($curArray))
- {
- $poll_optionText = $descArray[$K];
- $poll_optionCount = $V;
- echo $poll_rowHeader;
- if($poll_optionText != "")
- {
- echo $poll_dataHeader;
- echo $poll_optionText;
- echo $poll_dataFooter;
- if($poll_sum)
- $poll_percent = 100 * $poll_optionCount / $poll_sum;
- else
- $poll_percent = 0;
- echo $poll_dataHeader;
- if ($poll_percent > 0)
- {
- $poll_percentScale = (int)($poll_percent * $poll_resultBarScale);
- }
- printf(" %.2f %% (%d)", $poll_percent, $poll_optionCount);
- echo $poll_dataFooter;
- }
- echo $poll_rowFooter;
- }
- echo "总共投票次数:<font color=red> $poll_sum</font>";
- echo $poll_tableFooter;
- echo "<br>";
- echo "<input type="submit" name="Submit1" value="返回主页" onClick="javascript:location='http://gophp.heha.net/index.html'">";
- echo " <input type="submit" name="Submit2" value="重新投票" onClick="javascript:location='http://gophp.heha.net/mypolls.php3'">";
- if(isset($poll)){
- // write counter file
- $fp = fopen($coutfile, "wt");
- reset($curArray);
- while (list($Key, $Value) = each($curArray))
- {
- $tmp = sprintf( "%s %dn", $Key, $Value);
- fwrite($fp, $tmp);
- }
- // close file
- fclose($fp);
- }
- }
- ?>
- </body>
- </html>
注释:从上面我们可以看出该投票系统的基本过程:
1、打开文件取得数据到数组$curArray(文件不存在则初始化数组$curArray)
2、编历数组,处理数据得到所需值
3、计算百分比,控制统计bar图像宽度
4、将数据保存到"data.pol"中
这里有一点是需要注意:这里的data.pol文本文件需要有写权限。
Tags:php新手入门 php新手上路
分享到:
收藏
相关文章
- ·PHP新手上路(一)(2013-11-17)
- ·PHP新手上路(二)(2013-11-17)
- ·PHP新手上路(三)(2013-11-17)
- ·PHP新手上路(四)(2013-11-17)
- ·PHP新手上路(五)(2013-11-17)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)
- 程序员:能花钱的,就不要花时间(2)
- php中超级简单文件上传代码(2)
- php验证码生成与应用实例(2)
- PHP中校验ISBN码的函数详解(2)
- php 面向对象编程之构造方法与析构方法(2)
- 程序员的四种类型(2)
- PHP自学要多久?(2)
- linux系统systemtap监控应用问题分析(2)
- 帝国CMS内容点击无限加载思路分享(2)
- PHPCMS模块的安装和卸载(2)