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 09 PHP
php地址引用(php地址引用的效率问题)
Mar 23 PHP
php上传文件,创建递归目录的实例代码
Oct 18 PHP
php curl 获取https请求的2种方法
Apr 27 PHP
php简单实现屏蔽指定ip段用户的访问
Apr 29 PHP
PHP使用strstr()函数获取指定字符串后所有字符的方法
Jan 07 PHP
Yii2实现上下联动下拉框功能的方法
Aug 10 PHP
thinkphp分页集成实例
Jul 24 PHP
PHP 记录访客的浏览信息方法
Jan 29 PHP
php对象工厂类完整示例
Aug 09 PHP
laravel 框架实现无限级分类的方法示例
Oct 31 PHP
laravel7学习之无限级分类的最新实现方法
Sep 30 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
CI框架实现创建自定义类库的方法
2018/12/25 PHP
用CSS+JS实现的进度条效果效果
2007/06/05 Javascript
input 输入框内的输入事件详细分析
2010/03/17 Javascript
基于jquery的DIV随滚动条滚动而滚动的代码
2012/07/20 Javascript
JS截取字符串常用方法详细整理
2013/10/28 Javascript
window.print打印指定div实例代码
2013/12/13 Javascript
jQuery学习笔记之toArray()
2014/06/09 Javascript
js实现select组件的选择输入过滤代码
2014/10/14 Javascript
JavaScript模拟实现继承的方法
2015/03/30 Javascript
JS简单验证上传文件类型的方法
2017/04/17 Javascript
JS获取input[file]的值并显示在页面的实现方法
2018/03/09 Javascript
javascript实现时间日期的格式化的方法汇总
2020/08/06 Javascript
详解TensorFlow在windows上安装与简单示例
2018/03/05 Python
Python实现的爬取网易动态评论操作示例
2018/06/06 Python
Python爬虫框架scrapy实现的文件下载功能示例
2018/08/04 Python
python实现Flappy Bird源码
2018/12/24 Python
Python分析彩票记录并预测中奖号码过程详解
2019/07/09 Python
python 实现将Numpy数组保存为图像
2020/01/09 Python
Python 序列化和反序列化库 MarshMallow 的用法实例代码
2020/02/25 Python
python判断字符串以什么结尾的实例方法
2020/09/18 Python
python3 re返回形式总结
2020/11/20 Python
HTML5 Canvas图像模糊完美解决办法
2018/02/06 HTML / CSS
英国现代绅士品牌:Hackett
2017/12/17 全球购物
BNKR中国官网:带你感受澳洲领先潮流时尚
2018/08/21 全球购物
澳大利亚有机化妆品网上商店:The Well Store
2020/02/20 全球购物
前台文员个人求职信范文
2014/01/05 职场文书
大学生旷课检讨书
2014/01/22 职场文书
消防安全承诺书
2014/05/22 职场文书
学习优秀党务工作者先进事迹材料思想报告
2014/09/17 职场文书
安全生产工作汇报
2014/10/28 职场文书
公司更名通知函
2015/04/24 职场文书
人民的好儿女观后感
2015/06/18 职场文书
新课程改革心得体会
2016/01/22 职场文书
子女赡养老人协议书
2016/03/23 职场文书
2016年保险公众宣传日活动总结
2016/04/05 职场文书
Nginx报404错误的详细解决方法
2022/07/23 Servers