投票模块是一个非常实用的的功能,特别是在做一些网上调查时,通过投票来完成是一个非常不错的方法,并且能够真实地的反映出投票结果,做出正确的判断。本模块介绍一些投票的实现方法和分析投票实现方法,以及在投票中如何限制重复投票。
- 动态生成投票主题及选项。
- E-mail地址激活。
- 通过3D饼形图分析投票结果。
- 通过柱形图分析投票结果。
一、投票系统模块概述
二 、投票关键技术
字段名 | 数据类型 | 说明 |
tb_vote_subject_id | int(10) | 投票主题 |
tb_vote_subject_name | varchar(80) | 投票名称 |
tb_vote_subject_text | text | 投票说明 |
字段名 | 数据类型 | 说明 |
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_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(); //输出图像到浏览器
}
?>