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.MVC的模板标签系统(四)
Sep 05 PHP
IIS php环境配置PHP5 MySQL5 ZendOptimizer phpmyadmin安装与配置
Nov 18 PHP
Mysql数据库操作类( 1127版,提供源码下载 )
Dec 02 PHP
PHP中的session永不过期的解决思路及实现方法分享
Apr 20 PHP
php中批量删除Mysql中相同前缀的数据表的代码
Jul 01 PHP
获取php页面执行时间,数据库读写次数,函数调用次数等(THINKphp)
Jun 03 PHP
解析php中的escape函数
Jun 29 PHP
php rmdir使用递归函数删除非空目录实例详解
Oct 20 PHP
PHP简单实现合并2个数字键数组值的方法
May 30 PHP
php实现与python进行socket通信的方法示例
Aug 30 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
Nov 10 PHP
laravel Validator ajax返回错误信息的方法
Sep 29 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中在数据库中保存Checkbox数据(2)
2006/10/09 PHP
php session_start()出错原因分析及解决方法
2013/10/28 PHP
PHP针对字符串开头和结尾的判断方法
2016/07/11 PHP
浅谈PHPANALYSIS提取关键字
2019/03/08 PHP
Laravel配置全局公共函数的方法步骤
2019/05/09 PHP
固定背景实现的背景滚动特效示例分享
2013/05/19 Javascript
使用js完成节点的增删改复制等的操作
2014/01/02 Javascript
js调试系列 初识控制台
2014/06/18 Javascript
JQuery动态添加Select的Option元素实现方法
2016/08/29 Javascript
jquery日历插件e-calendar升级版
2016/11/10 Javascript
jquery表单插件form使用方法详解
2017/01/20 Javascript
vuejs使用FormData实现ajax上传图片文件
2017/08/08 Javascript
微信小程序实现tab页面切换功能
2018/07/13 Javascript
详解小程序不同页面之间通讯的解决方案
2018/11/23 Javascript
jQuery是用来干什么的 jquery其实就是一个js框架
2021/02/04 jQuery
python判断端口是否打开的实现代码
2013/02/10 Python
Python中字典的浅拷贝与深拷贝用法实例分析
2018/01/02 Python
Python实现正整数分解质因数操作示例
2018/08/01 Python
python中比较两个列表的实例方法
2019/07/04 Python
Python实现性能自动化测试竟然如此简单
2019/07/30 Python
Python 中由 yield 实现异步操作
2020/05/04 Python
Python 利用flask搭建一个共享服务器的步骤
2020/12/05 Python
使用Python制作一盏 3D 花灯喜迎元宵佳节
2021/02/26 Python
HTML5学习笔记之History API
2015/02/26 HTML / CSS
美国最大的无人机经销商:DroneNerds
2018/03/20 全球购物
POS解决方案:MUNBYN(热敏打印机、条形码扫描仪)
2020/06/09 全球购物
小学教师自我鉴定
2013/11/07 职场文书
写好自荐信要注意的问题
2013/11/10 职场文书
教师节学生演讲稿
2014/09/03 职场文书
爱护公共设施演讲稿
2014/09/13 职场文书
简易版租房协议书范本
2014/10/13 职场文书
经理聘任证明
2015/03/02 职场文书
法制教育观后感
2015/06/17 职场文书
药房管理制度范本
2015/08/06 职场文书
少年的你:世界上没有如果,要在第一次就勇敢的反抗
2019/11/20 职场文书
详解Oracle数据库中自带的所有表结构(sql代码)
2021/11/20 Oracle