登陆后才可以进入投票页面,否则将自动回到主页。投票页面分为多选和单选两种形式。在投票完成后根据投票活动发布时设置的是否允许查看结果来确定是否自动跳转到结果页面。若不允许,会自动弹出提示框,并返回主页。

1、获取投票信息

     if($ouser == ''){echo "<script>alert('请先登录!');location.href='index.php';</script>";}else{$voteid=@$_GET['vid'];if($voteid == ''){echo "location.href='index.php';</script>";}else{$sql="select vname,starttime,uid,vintro,open,more,max,min from vote where vid='".$voteid."'";$voteitem=mysql_query($sql);$vitem=mysql_fetch_array($voteitem);$sql2="SELECT itemcount,item,num FROM votetitle where vid='".$voteid."'";$votetitle=mysql_query($sql2);$vtitle=mysql_fetch_array($votetitle);$sql3="SELECT username FROM users where uid='".$vitem['uid']."'";$uname=mysql_query($sql3);$username=mysql_fetch_row($uname);

(此处也是我认为这个系统的一大问题,对数据库的访问过于频繁)

一共三次访问数据库,获得所需的全部投票信息。

2、投票活动信息的显示

将php代码结合进html中方便显示。

            <center><h2><?php echo $vitem['vname']; ?></h2></center><div id="vote"><table><tr><td>发布人:<?php echo $username[0];?></td><td>发布时间:<?php echo $vitem['starttime']; ?></td></tr></table><div id="vote_intro"><?php echo $vitem['vintro'] ?></div><div id="vote_contend">

3、对表单的设置

$itemcount=$vtitle['itemcount'];
$multi=$vitem['more'];
$option=explode('*',$vtitle['item']);

分别获得投票活动的选项数目、是否为多选、将各个选项储存在option对象中

(1)单选

a、前台表单

                                       if($multi==0){//单选$out="<form id='choice' name='choice' action='' method='post'><table>"."<tr><td>注意:只能选择一项!</td></tr>";for($i=0;$i<$itemcount;$i++){$j=$i+1;$out=$out."<tr><td><label><input type='radio' name='RadioGroup1' value='".$i."' id='".$j."' />".$option[$i]."</label></td></tr>";}$out=$out."<tr><td><input type='submit' name='choiceSend' value='提交并查看结果'/> <input type='reset'/></td></tr>"."</table></form>";echo $out;}

通过循环,将各个选项的单选框显示出来,并以数字顺序命名,以choiceSend为名提交信息

b、后台处理

<?php
//单选投票
if(@$_POST['choiceSend']){$ouser=@$_GET['user'];$voteid=@$_GET['vid'];if($ouser == ''){echo "<script language='javascript'> alert('请先登录!'); </script>";}else{$sql="SELECT itemcount,item,num FROM votetitle where vid='".$voteid."'";$votetitle=mysql_query($sql);$vtitle=mysql_fetch_array($votetitle);$sql2="select open from vote where vid='".$voteid."'";$voteitem=mysql_query($sql2);$vitem=mysql_fetch_array($voteitem);$open='';if($vitem['open']==0){$open="alert('您无权查看投票结果!');location.href='./index.php?user=".$ouser."';";}else{$open="location.href='./result.php?user=".$ouser."&vid=".$voteid."';";}$ballot=explode('*',$vtitle['num']);$decide=$_POST['RadioGroup1'];$ballot[$decide]=$ballot[$decide]+1;$num=implode('*',$ballot);$sql2="UPDATE votetitle SET num = '".$num."' WHERE vid = '".$voteid."'";mysql_query($sql2);echo "<script language='javascript'>alert('投票成功!');".$open."</script>";}
}
?>

点击提交后,会先检查是否处在登录的状态,通过查找数据库的方式确定信息,再将投票增加的选票添加到原有的投票统计中,并组成字符串,对数据库做出相应的更改,以实现投票的操作。

确定能否显示投票结果的过程:

if($vitem['open']==0){$open="alert('您无权查看投票结果!');location.href='./index.php?user=".$ouser."';";}else{$open="location.href='./result.php?user=".$ouser."&vid=".$voteid."';";}

计算并更改的过程:

                $ballot=explode('*',$vtitle['num']);$decide=$_POST['RadioGroup1'];$ballot[$decide]=$ballot[$decide]+1;$num=implode('*',$ballot);$sql2="UPDATE votetitle SET num = '".$num."' WHERE vid = '".$voteid."'";mysql_query($sql2);

(2)多选

a、前台表单

elseif($multi==1){//多选$out="<form id='mult' name='mult' method='post' action=''><table>"."<tr><td>注意:最多选择".$vitem['max']."项,最少选择".$vitem['min']."项!</td></tr>";for($i=0;$i<$itemcount;$i++){$j=$i+1;$out=$out."<tr><td><label><input type='checkbox' name='checkbox[]' value='".$i."' id='".$j."' />".$option[$i]."</label></td></tr>";}$out=$out."<tr><td><input type='submit' name='mutiSend' value='提交并查看结果'/> <input type='reset'/></td></tr>"."</table></form>";echo $out;}

大部分内容与单选相同,只是在获取信息时专门获取多选的两个信息:max最多选项、min最少选项。并提示用户

b、后台处理

<?php
//多选投票
if(@$_POST['mutiSend']){$ouser=@$_GET['user'];$voteid=@$_GET['vid'];if($ouser == ''){echo "<script language='javascript'> alert('请先登录!'); </script>";}else{$sql="SELECT itemcount,item,num FROM votetitle where vid='".$voteid."'";$votetitle=mysql_query($sql);$vtitle=mysql_fetch_array($votetitle);$sql2="select open from vote where vid='".$voteid."'";$voteitem=mysql_query($sql2);$vitem=mysql_fetch_array($voteitem);$open="";if($vitem[0]==0){$open="alert('您无权查看投票结果!');location.href='./index.php?user=".$ouser."';";}else{$open="location.href='./result.php?user=".$ouser."&vid=".$voteid."';";}$itemcount=$vtitle['itemcount'];$ballot=explode('*',$vtitle['num']);$decide=$_POST['checkbox'];for($i=0;$i<$itemcount;$i++){for($j=0;$j<count($decide);$j++){if($i==$decide[$j]){$ballot[$i]=$ballot[$i]+1;}}}$num=implode('*',$ballot);$sql2="UPDATE votetitle SET num = '".$num."' WHERE vid = '".$voteid."'";mysql_query($sql2);echo "<script language='javascript'>alert('投票成功!');".$open."</script>";}
}
?>

大多与单选相似,通过循环的方式将表单提交的投票信息逐条添加到投票统计信息中。

逐条添加的循环过程:

for($i=0;$i<$itemcount;$i++){for($j=0;$j<count($decide);$j++){if($i==$decide[$j]){$ballot[$i]=$ballot[$i]+1;}}}

此处发现了一个bug,前台可以正确的获取选择的限制信息,但在后台却没有有效的甄别机制,所以这个max和min的数据并没有起到它的作用。要修复并不难,只需在后台获取max和min的信息并用一个if语句进行确认,因为时间关系,暂时不做修改,希望有机会可以不断的完善。

简易在线投票系统(php)——投票页面相关推荐

  1. 基于JAVA简易在线教学系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署

    基于JAVA简易在线教学系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署 基于JAVA简易在线教学系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署 本源码技术栈: 项目架构 ...

  2. java计算机毕业设计简易在线教学系统源程序+mysql+系统+lw文档+远程调试

    java计算机毕业设计简易在线教学系统源程序+mysql+系统+lw文档+远程调试 java计算机毕业设计简易在线教学系统源程序+mysql+系统+lw文档+远程调试 本源码技术栈: 项目架构:B/S ...

  3. java计算机毕业设计简易在线教学系统源码+数据库+lw文档+系统

    java计算机毕业设计简易在线教学系统源码+数据库+lw文档+系统 java计算机毕业设计简易在线教学系统源码+数据库+lw文档+系统 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开 ...

  4. java计算机毕业设计简易在线教学系统源码+数据库+系统+lw文档+mybatis+运行部署

    java计算机毕业设计简易在线教学系统源码+数据库+系统+lw文档+mybatis+运行部署 java计算机毕业设计简易在线教学系统源码+数据库+系统+lw文档+mybatis+运行部署 本源码技术栈 ...

  5. 简易在线投票系统(php)——投票结果页面

    投票的结果页面的功能是根据投票的统计数据,显示当前的投票结果.只有在登录的情况下才能查看. 1.数据库连接部分 <?phpif($ouser == ''){echo "<scri ...

  6. php投票系统中各个文件的作用说明,PHP开发简单投票系统之投票页面功能模块(二)...

    当完成前面的投票后,可以选择点击查看结果查看每个项目的总票数和所有项目的投票百分比. 点击"查看结果"后程序会自动计算每个项目的票数和所占百分比. 使用了隐藏表单属性 隐藏域在页面 ...

  7. php投票系统报告,投票系统设计

    1新建Voteset.php文件<?php include('../conn.php'); if(isset($_post['votename'])?$_post['votename']:&qu ...

  8. 模拟投票小程序C语言代码,微信小程序投票系统创建投票发布demo完整源码下载 一个很简单 - 下载 - 搜珍网...

    压缩包 : cc5b0189c052ed2f04381e14637b362c.zip 列表 wx_voteforyou-master/ wx_voteforyou-master/README.md w ...

  9. 在线投票系统的设计与实现

    摘  要 随着全球互联网的快速发展和计算机应用的广泛普及,特别是无线网络的广泛覆盖和无线终端设备的爆炸性增长,人们现在可以随时随地访问网络,获取最新信息.参与网络活动和与他人在线互动.为了及时了解民意 ...

最新文章

  1. html实时显示log,websocketd 实现浏览器查看服务器实时日志
  2. linux 安装安装rz/sz 和 ssh
  3. Nginx与PHP(FastCGI)的安装、配置、优化
  4. 【iOS学习笔记】IOS开发中设置applicationIconBadgeNumber和消息推送
  5. linux重装系统后 70-persistent-net.rules 不能删除解决
  6. GreenPlum部署时所修改内核参数的含义
  7. linux程序设计百度网盘,linux系统编程视频 百度网盘下载
  8. Linux 命令之 pwck -- 用来验证系统认证文件内容和格式的完整性
  9. Apache RocketMQ在我司的最佳实践--智慧政务场景下的分布式消息与分布式事务
  10. 仅4步,就可通过SQL进行分布式死锁的检测与消除
  11. 2020年Web前端技术的三大趋势(干货)
  12. python基础教程第三版-Python基础教程(第三版)(七)再谈抽象
  13. BestCoder Round #4 之 Miaomiao's Geometry(2014/8/10)
  14. 使用Canvas基于手势可以使树秋千
  15. 计算机职称评定认可增刊吗,核心期刊增刊评定职称可以用吗?
  16. 在win7物理机,使用vmware,3台centos7系统,分别部署httpd,php-fpm,mariadb
  17. JS实现报表标题动态滚动效果
  18. 拓端tecdat|R语言使用最优聚类簇数k-medoids聚类进行客户细分
  19. 前端问题——报错Uncaught ReferenceError:saveScore is not defined at HTMLButtonElement.onclick
  20. QGIS展示三维DEM数据

热门文章

  1. 12八大排序算法的稳定性以及时间空间复杂度总结
  2. 晶体(Crystal)/晶振(Oscillator)
  3. web练习一——qq注册面开发(二)
  4. CBOW 和 Skip-Gram
  5. java作品欣赏_伊朗画家Javad的人像油画作品赏析
  6. linux压缩文件夹命令6,Linux 压缩文件夹6个最常用命令
  7. Bitlocker企业安全加密管理系列-1
  8. 拓嘉启远电商:拼多多开店好做吗
  9. poj1873 The Fortified Forest (状压+凸包)
  10. 记录ie不支持 for of 解决办法