投票模块是一个非常实用的的功能,特别是在做一些网上调查时,通过投票来完成是一个非常不错的方法,并且能够真实地的反映出投票结果,做出正确的判断。本模块介绍一些投票的实现方法和分析投票实现方法,以及在投票中如何限制重复投票。
- 动态生成投票主题及选项。
- E-mail地址激活。
- 通过3D饼形图分析投票结果。
- 通过柱形图分析投票结果。
一、投票系统模块概述
二 、投票关键技术
字段名 |
数据类型 |
说明 |
tb_vote_subject_id |
int(10) |
投票主题 |
tb_vote_subject_name |
varchar(80) |
投票名称 |
tb_vote_subject_text |
text |
投票说明 |
单选投票选项数据表的结构说明(tb_vote_odd):
字段名 |
数据类型 |
说明 |
tb_vote_id |
int(10) |
单项投票选项的id |
tb_vote_subject |
varchar(80) |
投票主题 |
tb_vote_content |
varchar(80) |
投票选项 |
tb_vote_counts |
varchar(50) |
投票次数 |
tb_vote_type |
varchar(50) |
投票类型(单选) |
tb_vote_photo |
varchar(80) |
上传图片 |
tb_vote_explain |
mediumtext |
投票说明 |
单选投票选项数据表的结构说明(tb_vote_more):
字段名 |
数据类型 |
说明 |
tb_vote_id |
int(10) |
多项投票选项的id |
tb_vote_subject |
varchar(80) |
投票主题 |
tb_vote_content |
varchar(80) |
投票选项 |
tb_vote_counts |
varchar(50) |
投票次数 |
tb_vote_type |
varchar(50) |
投票类型(多选) |
tb_vote_photo |
varchar(80) |
上传图片 |
tb_vote_explain |
mediumtext |
投票说明 |
完成以上三个数据表的创建以后,动态创建投票主题和选项就完成了一半。
<form method="post" action="vote_content_message_ok.php" enctype="multiparty/form-data"name="form2"> <tr bgcolor="#167BE3"> <td height="25" valign="middle"class="style1"> 投票主题~~~ <!--从数据表中选择投票主题--> <select name="tb_vote_subject" size="1"id="tb_vote_subject"> <?php $query="select * from tb_vote_subject"; $result=mysql_query($query); while($myrow=mysql_fetch_array($result)){ ?> <option value="<?php echo $myrow[tb_vote_subject_name]?>"></option> <?php } ?> </select></td> <tr brcolor="#ECF6FF"> <td height="30"> <input type="submit"name="submit1"value="单选"> <input type="submit"name="submit2"value="多选"> </td> </tr> </form>
(2)将表单的数据提交到vote_content_manage_ok.php根据提交按钮的值进行判断,执行将数据添加到单选还是多选的数据表中,并且判断是否上传图片,如果有图片上传将图片存放到服务器指定文件夹下。程序关键代码如下:
<?php session_start(); include("../conn/conn.php"); if ($_POST[Submit]=="单选" and $_FILES['tb_vote_photo']['name']==""){ //判断是单选,并且没有图片上传 //执行将数据添加到单选数据表中 $query="insert into tb_vote_odd(tb_vote_subject,tb_vote_content,tb_vote_counts,tb_vote_type,tb_vote_explain)values('".$_POST[tb_vote_subject]."','".$_POST[tb_vote_content]."','0','".$_POST[Submit]."','".$_POST[tb_vote_explain]."')"; $result=mysql_query($query); if ($result){ echo "<script>alert('投票内容提交成功!');window.location.href='index.php?admin_title=管理投票内容';</script>"; }else{echo "失败!";} } if ($_POST[Submit]=="单选" and $_FILES['tb_vote_photo']['name']!=""){ //判断是单选,并且有图片上传 $tb_vote_photo=$_FILES['tb_vote_photo']['size']; //获取图片大小 $tb_vote_photo_name=$_FILES['tb_vote_photo']['name']; //获取客户端机器原文件的名称 $tb_vote_photo_type=strtolower(strstr($tb_vote_photo_name,".")); //获取从"."到最后的字符,并将字符转换成小写 if($tb_vote_photo>2000000){ //判断图片是否超过指定大小 echo "<script>alert('对不起,您上传的图片超过2M!');history.back();</script>"; }else{ //判断上传图片的后缀名是否符合 if($tb_vote_photo_type!=".jpg" & $tb_vote_photo_type!=".gif" & $tb_vote_photo_type!=".bmp" & $tb_vote_photo_type!=".jpeg"){ echo "<script>alert('对不起,您上传的图片的格式不正确!');history.back();</script>"; }else{ //定义图片在服务器中的存储路径 $tb_vote_photo_path='../images/photo/'.date("YmdHis").mt_rand(1000000,9999999).$_FILES['tb_vote_photo']['name']; //应用move_uploaded_file函数,将图片存储到指定的文件夹下 if(move_uploaded_file($_FILES['tb_vote_photo']['tmp_name'],$tb_vote_photo_path)){ //执行添加语句,将数据添加到单选表中 $query="insert into tb_vote_odd(tb_vote_subject,tb_vote_content,tb_vote_counts,tb_vote_type,tb_vote_explain,tb_vote_photo)values('".$_POST[tb_vote_subject]."','".$_POST[tb_vote_content]."','0','".$_POST[Submit]."','".$_POST[tb_vote_explain]."','$tb_vote_photo_path')"; $result=mysql_query($query); if ($result){ echo "<script>alert('投票的内容提交成功!');window.location.href='index.php?admin_title=管理投票内容';</script>"; }else{ echo "失败!"; } } } } } if ($_POST[Submit2]=="多选" and $_FILES['tb_vote_photo']['name']==""){ //判断提交按钮的值是多选,并且无图片上传 $query="insert into tb_vote_more(tb_vote_subject,tb_vote_content,tb_vote_counts,tb_vote_type,tb_vote_explain)values('".$_POST[tb_vote_subject]."','".$_POST[tb_vote_content]."','0','".$_POST[Submit2]."','".$_POST[tb_vote_explain]."')"; $result=mysql_query($query); if ($result){ echo "<script>alert('投票内容提交成功!');window.location.href='index.php?admin_title=管理投票内容';</script>"; }else{echo "失败!";} } if ($_POST[Submit2]=="多选" and $_FILES['tb_vote_photo']['name']!=""){ $tb_vote_photo=$_FILES['tb_vote_photo']['size']; $tb_vote_photo_name=$_FILES['tb_vote_photo']['name']; //获取客户端机器原文件的名称 $tb_vote_photo_type=strtolower(strstr($tb_vote_photo_name,".")); //获取从"."到最后的字符,并将字符转换成小写 if($tb_vote_photo>2000000){ echo "<script>alert(对不起,您上传的图片超过2M!);history.back();</script>"; }else{ if($tb_vote_photo_type!=".jpg" & $tb_vote_photo_type!=".gif" & $tb_vote_photo_type!=".bmp"){ echo "<script>alert(对不起,您上传的图片的格式不正确!);history.back();</script>"; }else{ $tb_vote_photo_path='../images/photo/'.date("YmdHis").mt_rand(1000000,9999999).$_FILES['tb_vote_photo']['name']; if(move_uploaded_file($_FILES['tb_vote_photo']['tmp_name'],$tb_vote_photo_path)){ $query="insert into tb_vote_more(tb_vote_subject,tb_vote_content,tb_vote_counts,tb_vote_type,tb_vote_explain,tb_vote_photo)values('".$_POST[tb_vote_subject]."','".$_POST[tb_vote_content]."','0','".$_POST[Submit2]."','".$_POST[tb_vote_explain]."','$tb_vote_photo_path')"; $result=mysql_query($query); if ($result){ echo "<script>alert('投票内容提交成功!');window.location.href='index.php?admin_title=管理投票内容';</script>"; }else{ echo "失败!"; } } } } } ?>
2、通过3D饼形图分析投票结果
<?php include("conn/conn.php"); include_once ("jpgraph/jpgraph.php"); include_once ("jpgraph/jpgraph_pie.php"); include_once ("jpgraph/jpgraph_pie3d.php"); //引用3D饼图PiePlot3D对象所在的类文件 //统计投票的总量 $query=mysql_query("select sum(tb_vote_counts) as vote_gross from tb_vote_more where tb_vote_subject='".$_GET[vote_subject]."'"); $vote_counts=mysql_result($query,0,"vote_gross"); //获取总的投票数量 if($vote_counts>0){ $querys=mysql_query("select * from tb_vote_more where tb_vote_subject='".$_GET[vote_subject]."' "); while($myrow=mysql_fetch_array($querys)){ $vote_content[]=$myrow[tb_vote_content]; $resultes[]=$myrow[tb_vote_counts]; //将获取的值写入到数组中 } $graph = new PieGraph(540,260,'auto'); //创建画布 $graph->SetShadow(); //设置画布阴影 $graph->title->Set("应用3D饼形图统计优秀负责人"); //创建标题 $graph->title->SetFont(FF_SIMSUN,FS_BOLD); //设置标题字体 $graph->legend->SetFont(FF_SIMSUN,FS_NORMAL); //设置图例字体 $p1 = new PiePlot3D($resultes); //创建3D饼形图对象 $p1->SetLegends($vote_content); $p1->SetCenter(0.4,0.5); //设置饼形图所在画布的位置 $graph->Add($p1); //将3D饼图形添加到图像中 $graph->StrokeCSIM(); //输出图像到浏览器 } ?>