PHP新手上路(九)


Posted in PHP onOctober 09, 2006

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

8. 投票系统

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

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文本文件需要有写权限。   

PHP 相关文章推荐
PHP教程 变量定义
Oct 23 PHP
php连接数据库代码应用分析
May 29 PHP
PHP删除数组中特定元素的两种方法
Jul 02 PHP
采用thinkphp自带方法生成静态html文件详解
Jun 13 PHP
PHP中strtr字符串替换用法详解
Nov 26 PHP
Codeigniter购物车类不能添加中文的解决方法
Nov 29 PHP
Cygwin中安装PHP方法步骤
Jul 04 PHP
PHP实现多文件上传的方法
Jul 08 PHP
总结PHP如何获取当前主机、域名、网址、路径、端口和参数等
Sep 09 PHP
解决出现SoapFault (looks like we got no XML document)的问题
Jun 24 PHP
Laravel框架集成UEditor编辑器的方法图文与实例详解
Apr 17 PHP
TP5框架页面跳转样式操作示例
Apr 05 PHP
PHP新手上路(二)
Oct 09 #PHP
PHP新手上路(三)
Oct 09 #PHP
PHP新手上路(四)
Oct 09 #PHP
PHP新手上路(五)
Oct 09 #PHP
PHP新手上路(六)
Oct 09 #PHP
PHP新手上路(七)
Oct 09 #PHP
Apache, PHP在Windows 9x/NT下的安装与配置 (一)
Oct 09 #PHP
You might like
JavaScript 事件查询综合
2009/07/13 Javascript
浅谈Javascript嵌套函数及闭包
2010/11/09 Javascript
用JQUERY增删元素的代码
2012/02/14 Javascript
基于jquery的文本框与autocomplete结合使用(asp.net+json)
2012/05/30 Javascript
js 限制数字 js限制输入实现代码
2012/12/04 Javascript
js获得网页背景色和字体色的方法
2014/03/21 Javascript
一个判断抢购时间是否到达的简单的js函数
2014/06/23 Javascript
jQuery判断对象是否存在的方法
2015/02/05 Javascript
Easyui form combobox省市区三级联动
2016/01/13 Javascript
location.hash保存页面状态的技巧
2016/04/28 Javascript
javascript的列表切换【实现代码】
2016/05/03 Javascript
NodeJS配置HTTPS服务实例分享
2017/02/19 NodeJs
详解node HTTP请求客户端 - Request
2017/05/05 Javascript
详解Vue.js搭建路由报错 router.map is not a function
2017/06/27 Javascript
JS计算距当前时间的时间差实例
2017/12/29 Javascript
详解自定义ajax支持跨域组件封装
2018/02/08 Javascript
如何以Angular的姿势打开Font-Awesome详解
2018/04/22 Javascript
React Native基础入门之调试React Native应用的一小步
2018/07/02 Javascript
解决angularJS中input标签的ng-change事件无效问题
2018/09/13 Javascript
nodejs中方法和模块用法示例
2018/12/24 NodeJs
JavaScript使用Math.random()生成简单的验证码
2019/01/21 Javascript
[01:00:14]DOTA2官方TI8总决赛纪录片 真视界True Sight
2019/01/16 DOTA
学习python 之编写简单乘法运算题
2016/02/27 Python
Django操作session 的方法
2020/03/09 Python
Python打印特殊符号及对应编码解析
2020/05/07 Python
详解css3中dispaly的Grid布局与Flex布局
2020/09/11 HTML / CSS
Html5游戏开发之乒乓Ping Pong游戏示例(三)
2013/01/21 HTML / CSS
美国在线健康和美容市场:Pharmapacks
2018/12/05 全球购物
俄罗斯香水在线商店:AromaCode
2019/12/04 全球购物
淘宝好评语大全
2014/05/05 职场文书
需求分析说明书
2014/05/09 职场文书
运输企业安全生产责任书
2014/07/28 职场文书
最美家庭活动方案
2014/08/31 职场文书
故宫英文导游词
2015/01/31 职场文书
中英文求职信范文
2015/03/19 职场文书
MySQL 数据恢复的多种方法汇总
2021/06/21 MySQL