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+SqlServer实现分页显示
Oct 09 PHP
谈谈新手如何学习PHP
Dec 14 PHP
Smarty安装配置方法
Apr 10 PHP
PHP目录函数实现创建、读取目录教程实例
Jan 13 PHP
解析获取优酷视频真实下载地址的PHP源代码
Jun 26 PHP
解析PHP函数array_flip()在重复数组元素删除中的作用
Jun 27 PHP
PHP里的单例类写法实例
Jun 25 PHP
PHP7正式版测试,性能惊艳!
Dec 08 PHP
详解PHP处理字符串类似indexof的方法函数
Jun 11 PHP
php魔法函数与魔法常量使用介绍
Jul 23 PHP
php检查函数必传参数是否存在的实例详解
Aug 28 PHP
详解cookie验证的php应用的一种SSO解决办法
Oct 20 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
PHP高自定义性安全验证码代码
2011/11/27 PHP
如何在Ubuntu下启动Apache的Rewrite功能
2013/07/05 PHP
php实现统计邮件大小的方法
2013/08/06 PHP
cakephp打印sql语句的方法
2015/02/13 PHP
Yii使用技巧大汇总
2015/12/29 PHP
PHP中strnatcmp()函数“自然排序算法”进行字符串比较用法分析(对比strcmp函数)
2016/01/07 PHP
Yii2.0 Basic代码中路由链接被转义的处理方法
2016/09/21 PHP
PHP多维数组元素操作类的方法
2016/11/14 PHP
用javascript实现画板的代码
2007/09/05 Javascript
JQuery实现倒计时按钮的实现代码
2012/03/23 Javascript
js/jquery获取浏览器窗口可视区域高度和宽度以及滚动条高度实现代码
2012/12/17 Javascript
使用jquery mobile做幻灯播放效果实现步骤
2013/01/04 Javascript
JavaScript拆分字符串时产生空字符的解决方案
2014/09/26 Javascript
Javascript简单改变表单元素背景的方法
2015/07/15 Javascript
Jquery表单验证失败后不提交的解决方法
2016/10/18 Javascript
Ajax+FormData+javascript实现无刷新表单信息提交
2016/10/24 Javascript
通过BootStrap-select插件 js jQuery控制select属性变化
2017/01/03 Javascript
vue better-scroll插件使用详解
2018/01/25 Javascript
webpack+vue.js构建前端工程化的详细教程
2020/05/10 Javascript
对python中使用requests模块参数编码的不同处理方法
2018/05/18 Python
Python根据已知邻接矩阵绘制无向图操作示例
2018/06/23 Python
Python中如何使用if语句处理列表实例代码
2019/02/24 Python
Python3实现的旋转矩阵图像算法示例
2019/04/03 Python
教你一步步利用python实现贪吃蛇游戏
2019/06/27 Python
pytorch 实现模型不同层设置不同的学习率方式
2020/01/06 Python
css3之UI元素状态伪类选择器实例演示
2017/08/11 HTML / CSS
详解CSS3中常用的样式【基本文本和字体样式】
2020/10/20 HTML / CSS
浅谈关于html5中图片抛物线运动的一些心得
2018/01/09 HTML / CSS
早餐连锁店计划书
2014/01/08 职场文书
高中生学期学习自我评价
2014/02/24 职场文书
商务日语专业自荐信
2014/04/17 职场文书
2013年最新自荐信范文
2014/06/23 职场文书
小学生读书笔记
2015/07/01 职场文书
车辆安全隐患排查制度
2015/08/05 职场文书
2019职场实习报告该怎么写?
2019/07/01 职场文书
Python加密与解密模块hashlib与hmac
2022/06/05 Python