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中header的用法详解
Jun 07 PHP
九个你必须知道而且又很好用的php函数和特点
Aug 08 PHP
6种php上传图片重命名的方法实例
Nov 04 PHP
php ckeditor上传图片文件名乱码解决方法
Nov 15 PHP
php实现把数组按指定的个数分隔
Feb 17 PHP
destoon实现底部添加你是第几位访问者的方法
Jul 15 PHP
PHP中对数组的一些常用的增、删、插操作函数总结
Nov 27 PHP
php实现微信企业号支付个人的方法详解
Jul 26 PHP
PHP registerXPathNamespace()函数讲解
Feb 03 PHP
PHP使用CURL实现下载文件功能示例
Jun 03 PHP
Laravel框架下的Contracts契约详解
Mar 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支持页面回退的两种方法[转]
2007/02/14 PHP
php下判断数组中是否存在相同的值array_unique
2008/03/25 PHP
探讨:如何使用PhpDocumentor生成文档
2013/06/25 PHP
php通过array_unshift函数添加多个变量到数组前端的方法
2015/03/18 PHP
PHP中foreach()用法汇总
2015/07/02 PHP
PHP用FTP类上传文件视频等的简单实现方法
2016/09/23 PHP
php双层循环(九九乘法表)
2017/10/23 PHP
PHP中上传文件打印错误错误类型分析
2019/04/14 PHP
laravel-admin的多级联动方法
2019/09/30 PHP
PHP语言对接抖音快手小红书视频/图片去水印API接口源码
2020/08/11 PHP
非常不错的功能强大代码简单的管理菜单美化版
2008/07/09 Javascript
jQuery.Autocomplete实现自动完成功能(详解)
2010/07/13 Javascript
JS和JQUERY获取页面大小,滚动条位置,元素位置(示例代码)
2013/12/14 Javascript
JavaScript实现找出数组中最长的连续数字序列
2014/09/03 Javascript
js实现文本框中输入文字页面中div层同步获取文本框内容的方法
2015/03/03 Javascript
JS组件Bootstrap实现弹出框效果代码
2016/04/26 Javascript
jquery取消事件冒泡的三种方法(推荐)
2016/05/28 Javascript
微信小程序 五星评分(包括半颗星评分)实例代码
2016/12/14 Javascript
angularjs实现下拉列表的选中事件示例
2017/03/03 Javascript
微信小程序 在线支付功能的实现
2017/03/14 Javascript
JavaScript实现的冒泡排序法及统计相邻数交换次数示例
2017/04/26 Javascript
jquery实现联想词搜索框和搜索结果分页的示例
2018/10/10 jQuery
vue-router命名视图的使用讲解
2019/01/19 Javascript
简单了解JavaScript中常见的反模式
2019/06/21 Javascript
vue实践---根据不同环境,自动转换请求的url地址操作
2020/09/21 Javascript
解决vscode进行vue格式化,会自动补分号和双引号的问题
2020/10/26 Javascript
[58:23]LGD vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
在Django的模型中添加自定义方法的示例
2015/07/21 Python
python实现音乐下载器
2018/04/15 Python
Python3删除排序数组中重复项的方法分析
2019/01/31 Python
解决pycharm运行程序出现卡住scanning files to index索引的问题
2019/06/27 Python
python爬虫神器Pyppeteer入门及使用
2019/07/13 Python
Python实现Restful API的例子
2019/08/31 Python
python图形开发GUI库wxpython使用方法详解
2020/02/14 Python
旷课检讨书范文
2015/01/27 职场文书
详解Python中的for循环
2022/04/30 Python