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 面向对象的一个例子
Apr 12 PHP
php提示无法加载或mcrypt没有找到 PHP 扩展 mbstring解决办法
Mar 27 PHP
PHP获取当前页面完整URL的实现代码
Jun 10 PHP
解决PhpMyAdmin中导入2M以上大文件限制的方法分享
Jun 06 PHP
php专用数组排序类ArraySortUtil用法实例
Apr 03 PHP
PHP实现的常规正则验证helper公共类完整实例
Apr 27 PHP
PHP的RSA加密解密方法以及开发接口使用
Feb 11 PHP
PHP PDOStatement::fetch讲解
Jan 31 PHP
laravel实现前后台路由分离的方法
Oct 13 PHP
yii2.0框架场景的简单使用示例
Jan 25 PHP
ThinkPHP5与单元测试PHPUnit使用详解
Feb 23 PHP
PHP数组Key强制类型转换实现原理解析
Sep 01 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分页函数
2006/07/08 PHP
PHP生成网页快照 不用COM不用扩展.
2010/02/11 PHP
PHP 作用域解析运算符(::)
2010/07/27 PHP
php连接odbc数据源并保存与查询数据的方法
2014/12/24 PHP
php中mysql连接方式PDO使用详解
2015/02/25 PHP
php根据指定位置和长度获得子字符串的方法
2015/03/17 PHP
大家在抢红包,程序员在研究红包算法
2015/08/31 PHP
ThinkPHP表单数据智能写入create方法实例分析
2015/09/27 PHP
PHP读MYSQL中文乱码的快速解决方法
2016/10/01 PHP
php+ajax+json 详解及实例代码
2016/12/12 PHP
php连接sftp的作用以及实例代码
2019/09/23 PHP
php弹出提示框的是实例写法
2019/09/26 PHP
再谈javascript 动态添加样式规则 W3C校检
2009/12/25 Javascript
jquery实现经典的淡入淡出选项卡效果代码
2015/09/22 Javascript
深入浅析JavaScript面向对象和原型函数
2016/02/06 Javascript
简介BootStrap model弹出框的使用
2016/04/27 Javascript
字符串反转_JavaScript
2016/04/28 Javascript
Vue组件教程之Toast(Vue.extend 方式)详解
2019/01/27 Javascript
PyQt实现界面翻转切换效果
2018/04/20 Python
Tensorflow实现卷积神经网络的详细代码
2018/05/24 Python
用PyInstaller把Python代码打包成单个独立的exe可执行文件
2018/05/26 Python
python 三元运算符使用解析
2019/09/16 Python
CSS3田字格列表的样式编写方法
2018/11/22 HTML / CSS
英国精品买手店:Browns Fashion
2016/09/29 全球购物
什么是Assembly(程序集)
2014/09/14 面试题
Windows和Linux动态库应用异同
2016/07/28 面试题
总经理岗位职责
2013/11/09 职场文书
美德好少年主要事迹
2014/01/29 职场文书
十八届三中全会宣传方案
2014/02/21 职场文书
文艺晚会主持词
2014/03/24 职场文书
执法作风整顿剖析材料
2014/10/11 职场文书
求职简历自我评价范文
2015/03/10 职场文书
2015年行政工作总结范文
2015/04/09 职场文书
歌咏比赛口号大全
2015/12/25 职场文书
Java基于字符界面的简易收银台
2021/06/26 Java/Android
Python  lambda匿名函数和三元运算符
2022/04/19 Python