当前位置:首页 > 专题 > 新手初学PHP > PHP新手上路(九) 投票系统

PHP新手上路(九) 投票系统

发布:smiling 来源: php粉丝网  添加日期:2013-11-17 浏览: 评论:0 

建设一个简单交互的网站(五)

 8. 投票系统

在许多时候,我们需要收集上网者和网友们的意见。例如:新版页面与旧版页面的比较;对某一事情的看法;对体育比赛结果的预测等等。这时候,你需要一个非常有效的网上调查系统。

8.1 投票系统(mypolls.php3):

  1. <?  
  2. $status=0;  
  3. if(isset($polled)&&($polled=="c-e")){  
  4. $status=1;  
  5. }  
  6. #echo "$status";  
  7. if(isset($poll)&&($status==0)){  
  8. setcookie("polled","c-e",time() 86400,"/");#time=24h  
  9. }  
  10. ?>  
  11. <html>  
  12. <head>  
  13. <title>新版页面调查</title>  
  14. <meta http-equiv="Content-Type" content="text/html; charset=gb2312">  
  15. <style type="text/css">  
  16. <!--  
  17. .tb { border="1" bordercolor="#009933" cellspacing="0" font-size: 9pt; color: #000000}  
  18. .head { font-family: "宋体"; font-size: 12pt; font-weight: bold; color: #009933; text-decoration: none}  
  19. .pt9 { font-size: 9pt}  
  20. a.p9:link { font-size: 9pt; color: #000000; text-decoration: none}  
  21. a.p9:visited { font-size: 9pt; color: #000000; text-decoration: none }  
  22. a.p9:hover { font-size: 9pt; color: #FF0000; text-decoration: underline}  
  23. a.p9:active { font-size: 9pt; color: #FF0000; text-decoration: underline }  
  24. -->  
  25. </style>  
  26. </head>  
  27. <body bgcolor="#FFFFFF">  
  28. <div class="head">与旧版页面相比较您觉得新版页面:</div><br>  
  29. <?  
  30. if(!isset($submit)){  
  31. ?>  
  32. <form action="myPolls.php3" method="get">  
  33. <input type="radio" name="poll_voteNr" value="1" checked >  
  34. <span class="pt9">信息量更大</span> <br>  
  35. <input type="radio" name="poll_voteNr" value="2" >  
  36. <span class="pt9">网页更精美</span> <br>  
  37. <input type="radio" name="poll_voteNr" value="3" >  
  38. <span class="pt9">没什么改进</span> <br>  
  39. <input type="radio" name="poll_voteNr" value="4" >  
  40. <span class="pt9">其它</span> <br>  
  41. <input type="submit" name="submit" value="OK">  
  42. <input type="hidden" name="poll" value="vote">  
  43. <A HREF="myPolls.php3?submit=OK" class="p9">查看调查结果</A>  
  44. </form>  
  45. <?  
  46. /*
  47. 如果想增加其它的选项可直接加上即可  
  48. */ 
  49. }else{  
  50. $descArray=array(1=>"信息量更大",  
  51. 2=>"网页更精美",  
  52. 3=>"没什么改进",  
  53. 4=>"其它" 
  54. );  
  55. $poll_resultBarHeight = 9; // height in pixels of percentage bar in result table  
  56. $poll_resultBarScale = 1; // scale of result bar (in multiples of 100 pixels)  
  57. $poll_tableHeader="<table border=1 class="tb">";  
  58. $poll_rowHeader="<tr>";  
  59. $poll_dataHeader="<td align=center>";  
  60. $poll_dataFooter="</td>";  
  61. $poll_rowFooter="</tr>";  
  62. $poll_tableFooter="</table>";  
  63. $coutfile="data.pol";  
  64. $poll_sum=0;  
  65.  
  66. // read counter-file  
  67. if (file_exists$coutfile))  
  68. {  
  69. $fp = fopen$coutfile"rt");  
  70. while ($Line = fgets($fp, 10))  
  71. {  
  72. // split lines into identifier/counter  
  73. if (ereg"([^ ]*) *([0-9]*)"$Line$tmp))  
  74. {  
  75. $curArray[(int)$tmp[1]] = (int)$tmp[2];  
  76. $poll_sum =(int)$tmp[2];  
  77. }  
  78. }  
  79. // close file  
  80. fclose($fp);  
  81. }else{//  
  82. for ($i=1;$i<=count($descArray);$i ){  
  83. $curArray[$i]=0;  
  84. }  
  85. }  
  86. if(isset($poll)){  
  87. $curArray[$poll_voteNr] ;  
  88. $poll_sum ;  
  89. }  
  90. echo $poll_tableHeader;  
  91.  
  92. // cycle through all options编历数组  
  93. reset($curArray);  
  94. while (list($K$V) = each($curArray))  
  95. {  
  96. $poll_optionText = $descArray[$K];  
  97. $poll_optionCount = $V;  
  98. echo $poll_rowHeader;  
  99.  
  100. if($poll_optionText != "")  
  101. {  
  102. echo $poll_dataHeader;  
  103. echo $poll_optionText;  
  104. echo $poll_dataFooter;  
  105.  
  106. if($poll_sum)  
  107. $poll_percent = 100 * $poll_optionCount / $poll_sum;  
  108. else 
  109. $poll_percent = 0;  
  110. echo $poll_dataHeader;  
  111.  
  112. if ($poll_percent > 0)  
  113. {  
  114. $poll_percentScale = (int)($poll_percent * $poll_resultBarScale);  
  115. }  
  116.  
  117. printf(" %.2f %% (%d)"$poll_percent$poll_optionCount);  
  118.  
  119. echo $poll_dataFooter;  
  120. }  
  121.  
  122. echo $poll_rowFooter;  
  123. }  
  124.  
  125. echo "总共投票次数:<font color=red> $poll_sum</font>";  
  126. echo $poll_tableFooter;  
  127. echo "<br>";  
  128. echo "<input type="submit" name="Submit1" value="返回主页" onClick="javascript:location='http://gophp.heha.net/index.html'">";  
  129. echo " <input type="submit" name="Submit2" value="重新投票" onClick="javascript:location='http://gophp.heha.net/mypolls.php3'">";  
  130. if(isset($poll)){  
  131. // write counter file  
  132. $fp = fopen($coutfile"wt");  
  133. reset($curArray);  
  134. while (list($Key$Value) = each($curArray))  
  135. {  
  136. $tmp = sprintf( "%s %dn"$Key$Value);  
  137. fwrite($fp$tmp);  
  138. }  
  139. // close file  
  140. fclose($fp);  
  141. }  
  142. }  
  143. ?>  
  144. </body>  
  145. </html> 

注释:从上面我们可以看出该投票系统的基本过程:

1、打开文件取得数据到数组$curArray(文件不存在则初始化数组$curArray)

2、编历数组,处理数据得到所需值

3、计算百分比,控制统计bar图像宽度

4、将数据保存到"data.pol"中

这里有一点是需要注意:这里的data.pol文本文件需要有写权限。

Tags:php新手入门 php新手上路

分享到: 收藏

相关文章