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 相关文章推荐
解决中英文字符串长度问题函数
Jan 16 PHP
PHP+Tidy-完美的XHTML纠错+过滤
Apr 10 PHP
利用discuz实现PHP大文件上传应用实例代码
Nov 14 PHP
PHP mkdir()定义和用法
Jan 14 PHP
php 邮件发送问题解决
Mar 22 PHP
浅谈Eclipse PDT调试PHP程序
Jun 09 PHP
兼容PHP和Java的des加密解密代码分享
Jun 26 PHP
PHP类的反射用法实例
Nov 03 PHP
Thinkphp无限级分类代码
Nov 11 PHP
PHP中串行化用法示例
Nov 16 PHP
php处理多图上传压缩代码功能
Jun 13 PHP
阿里云的WindowsServer2016上部署php+apache
Jul 17 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中HTTP方式下的Gzip压缩传输方法举偶
2007/02/15 PHP
PHP Document 代码注释规范
2009/04/13 PHP
解析php中eclipse 用空格替换 tab键
2013/06/24 PHP
使用PHPExcel操作Excel用法实例分析
2015/03/26 PHP
PHP的Laravel框架中使用消息队列queue及异步队列的方法
2016/03/21 PHP
php中文字符串截取多种方法汇总
2016/10/06 PHP
JavaScript Event事件学习第一章 Event介绍
2010/02/07 Javascript
六款帮助你实现惊艳视差滚动效果的jQuery插件
2012/09/14 Javascript
jQuery extend 的简单实例
2013/09/18 Javascript
JS实现侧悬浮浮动实例代码
2013/11/29 Javascript
原生js实现类似fullpage的单页/全屏滚动
2017/01/22 Javascript
JS实现图片上传多次上传同一张不生效的处理方法
2018/08/06 Javascript
Node.js之删除文件夹(含递归删除)代码实例
2019/09/09 Javascript
基于Echarts图表在div动态切换时不显示的解决方式
2020/07/20 Javascript
Python中实现对Timestamp和Datetime及UTC时间之间的转换
2015/04/08 Python
Python切片操作实例分析
2018/03/16 Python
PyQt5响应回车事件的方法
2019/06/25 Python
django 邮件发送模块smtp使用详解
2019/07/22 Python
关于pytorch中网络loss传播和参数更新的理解
2019/08/20 Python
python 通过邮件控制实现远程控制电脑操作
2020/03/16 Python
python读取图片颜色值并生成excel像素画的方法实例
2021/02/19 Python
德国低价购买灯具和家具网站:Style-home.de
2016/11/25 全球购物
倩碧香港官方网站:Clinique香港
2017/11/13 全球购物
Ootori在线按摩椅店:一家专业的按摩椅制造商
2019/04/10 全球购物
英国国家美术馆商店:National Gallery
2019/05/01 全球购物
《中国的气候》教学反思
2014/02/23 职场文书
学习党的群众路线教育实践活动心得体会
2014/03/01 职场文书
中共广东省委常委会党的群众路线教育实践活动整改方案
2014/09/23 职场文书
村主任“四风”问题个人对照检查材料思想汇报
2014/10/02 职场文书
银行竞聘报告范文
2014/11/06 职场文书
2014年应急工作总结
2014/12/11 职场文书
优秀大学生申请书
2019/06/24 职场文书
关于食品安全的演讲稿范文(三篇)
2019/10/21 职场文书
62句有关感恩节文案(推荐收藏)
2019/11/28 职场文书
mysql的MVCC多版本并发控制的实现
2021/04/14 MySQL
SQL Server查询某个字段在哪些表中存在
2022/03/03 SQL Server