一个简单的PHP投票系统
2024年02月28日
建立2个表,一个用来显示当前主题,一个存放历史结果。当前主题表结构:选项(包括主题),票数
历史结果表结构:id,主题名,关点,投票开始时间,投票结束时间
管理页面:
功能:1、更新投票主题2、查看历史结果3、停止使用投票系统
一、建表
CREATE Table toupiaoall(
id int(4)NOT NULL auto_increment,
theme char(20)NOT NULL,
idea char(100)NOT NULL,
begin char(20)NOT NULL,
end char(20)NOT NULL,
PRIMARY KEY(id)
);
CREATE TABLE toupiaocur(
xx varchar(20)NOT NULL,
ps int(6)not null,
date char(10)not null
);
说明:在表toupiaocur中,第一个记录存放主题和建立时间,在进行投票时不改动。从第二个记录开始记录各选项内容和票数。
链接程序:connect.inc.php3
<?
$show="yes";
$xuanxiang=array("","one","two","thr","fou","fiv");
$current="toupiaocur";
$alldata="toupiaoall";
mysql_connect("localhost","","")or die("sorry,unable to connect to database");
mysql_select_db("db")or die("unable to select database");
?>
二、显示页面
<?
//页面
include("connect.inc.php3");
$query_tp="select*from$current";
$result_tp=mysql_query($query_tp);
$row_tp= mysql_fetch_array($result_tp);
$rows_tp= mysql_num_rows($result_tp);
if($rows_tp){
?>
<hr size="1">
<script language="JavaScript">
<!--
function newin(){
var newwin=window.open("","homeWin","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,width=240,height=180");
return false;
}
//-->
</script>
<form name="fromtp"action="toupiao_pre.php"method="post"onsubmit="newin('')"target=homeWin>
<center>【网上调查】</center><br>
<?
echo"<font color=#cc3300>".$row_tp[0]."</font><br>";//显示主题
//显示每个选项
for($t=1;$t<$rows_tp;$t++){//从1开始是为了不选主题,原因嘛。。想想表的结构吧
$seek=mysql_data_seek($result_tp,$t);
$list_tp=mysql_fetch_row($result_tp);
?>
<input type="radio"name="piaosu"value="<?echo$list_tp[0]."\"";if($t==1)echo"checked";?>><?echo$list_tp[0];?><br>
<?
}
?>
<div align=center><br><input type="submit"name="Submittp"value="投票/查看"style="background-color:rgb(235,235,235)"></div>
</form>
<?
}
?>
三、管理页面
<?
include("connect.inc.php3");
//功能:1、更新投票主题(同时将上期投票结果放到历史中)2、查看历史结果3、修改历史结果
?>
<form name="form1"action="<?echo$PHP_SELF;?>"method="get">
<font color=#ff9900><center>更新主题:</font><select name="select">
<option selected>选项数目</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
<input type="submit"name="Submit_tp"value="确定">
<?
echo"<a href=\"$PHP_SELF?vhistory=yes\"><font color=#ff9900>查看历史记录</font><a>";
echo"<a href=\"$PHP_SELF?stop=yes\"><font color=#ff9900>停止使用投票系统</font></a>";
echo"<a href=\"admin.php3\"><font color=#ff9900>文章管理</font></a>";
echo"</center></form><hr size=\"1\"color=\"#ff9900\">";
if($Submit_tp){
?>
<SCRIPT language=JavaScript>
<!--
var submitcount=0;
function check_com(){
if(document.form_tp.theme.value.length==0){
submitcount--;
alert("主题没有填写!\nYou must supply a subject.");
return false;
}
<?
for($t=1;$t<=$select;$t++){
?>
if(document.form_tp.<?echo$xuanxiang[$t];?>.value.length==0){
submitcount--;
alert("选项没有填写完整\nYou must supply a option.");
return false;
}
<?
}
?>
}
//-->
</SCRIPT>
<form name="form_tp"onsubmit="return check_com()"action="<?echo$PHP_SELF;?>"method="post">
<table width="100%"border="0"cellspacing="0"cellpadding="0">
<tr>
<td width="23%"bgcolor="#f5f5f5">
<div align="center">主题:</div>
</td>
<td width="77%"bgcolor="#f5f5f5">
<input type="text"name="theme"><input type="hidden"name="select2"value="<?echo$select;?>">
</td>
</tr>
<tr>
<td width="23%">
<div align="center">选项:</div>
</td>
<td width="77%">
<?
for($sm=1;$sm<=$select;$sm++){
echo"$sm<input type=\"text\"name=\"".$xuanxiang[$sm]."\"size=\"10\">";
}?>
</td>
</tr>
<tr>
<td colspan="2"bgcolor="#f5f5f5">
<div align="center">
<input type="submit"onSubmit="return check_com()"name="Submit_new"value="确定">
</div>
</td>
</tr>
</table>
</form>
<?
}
if($Submit_new)
{//1
//从CURRENT表中读出数据放到历史结果表中
$query="select*from$current";
$result=mysql_query($query);
$row_num=mysql_num_rows($result);
$rows=mysql_fetch_array($result);
if($rows!=0){//2
for($i=1;$i<$row_num;$i++)
{//3
$seek=mysql_data_seek($result,$i);
$row=mysql_fetch_row($result);
$jieguo=$jieguo.$row[0]."&".$row[1]."\n";
}//4
$date=date("Y-m-d");
$query_inse="insert into$alldata(theme,idea,begin,end)values('$rows[0]','$jieguo','$rows[2]','$date')";
$insert=mysql_query($query_inse);
//5
//删除current中原有数据
if($insert)mysql_query("delete from$current");
}
//加入新数据
$begin=date("Y-m-d");
$query_new_theme="insert into$current(xx,date)values('$theme','$begin')";
$new_theme=mysql_query($query_new_theme);
if($new_theme)echo"主题更改成功!<br>";
for($n=1;$n<=$select2;$n++){//8
$query_new_xx="insert into$current(xx)values(\"${$xuanxiang[$n]}\")";
$new_xx=mysql_query($query_new_xx);
if($new_xx)
echo"选项<font color=red>${$xuanxiang[$n]}</font>添加成功!<br>";else echo"选项<font color=red>${$xuanxiang[$n]}</font>添加失败!<br>";
}//9
echo"<center>3秒后返回</center><meta http-equiv=\"refresh\"content=\"3;url=$PHP_SELF\">";
}//10
//显示历史结果
if(isset($vhistory)&&$vhistory=="yes"){
$query="select*from$alldata order by id desc";
$result=mysql_query($query);
while($rows=mysql_fetch_array($result)){
$idea=explode("\n",$rows[idea]);
$all=0;
for($j=0;$j<count($idea)-1;$j++){
$allidea=explode("&",$idea[$j]);
$all=$all+$allidea[1];
}
?>
<table width="100%"border="0"cellspacing="0"cellpadding="0">
<tr bgcolor="#EAEAEA">
<td height="20"><?echo"【主题】".$rows[theme]."【开始时间】".$rows[begin]."【结束时间】".$rows[end]."[共".$all."人参加投票]<a href=\"$PHP_SELF?del=yes&id=$rows[id]\"><font color=red>[删除]</font></a>";?></td>
</tr>
<tr>
<td>
<?
for($j=0;$j<count($idea)-1;$j++){
$list_idea=explode("&",$idea[$j]);
if($all!=0)$percent=round($list_idea[1]/$all*10000)/100;else$percert=0;
echo"<font color=#cc3300>".$list_idea[0].":</font>".$list_idea[1]."人(".$percent."%)";
}
?></td>
</tr>
</table>
<br><br>
<?
}
}
if(isset($del)&&$del=="yes"){
$query_del="delete from$alldata where id=$id";
$result_del=mysql_query($query_del);
if($result_del){
echo"<center>删除成功!1秒后返回!</center>";
echo"<meta http-equiv=\"refresh\"content=\"1;url=$PHP_SELF?vhistory=yes\">";
}
}
//停止投票
if(isset($stop)&&$stop=="yes"){
//current to alldata
$query="select*from$current";
$result=mysql_query($query);
$row_num=mysql_num_rows($result);
$rows=mysql_fetch_array($result);
if($rows!=0){
for($i=1;$i<$row_num;$i++)
{
$seek=mysql_data_seek($result,$i);
$row=mysql_fetch_row($result);
$jieguo=$jieguo.$row[0]."&".$row[1]."\n";
}
$date=date("Y-m-d");
$query_inse="insert into$alldata(theme,idea,begin,end)values('$rows[0]','$jieguo','$rows[2]','$date')";
$insert=mysql_query($query_inse);
}
//del
$query_stop="delete from$current";
$result_stop=mysql_query($query_stop);
if($result_stop)echo"<center>网上调查已停止!</center>";else echo"<center>停止网上调查失败!</center>";
}
?>
四、处理页面(计数页面)
<?
//显示页面
include("connect.inc.php3");
$query="update$current set ps=ps+1 where binary xx like\"$piaosu\"";//*选中的票数加1,binary是为了精确匹配
$update=mysql_query($query);
$query_tp="select*from$current";
$result_tp=mysql_query($query_tp);
$result_all=mysql_fetch_array($result_tp);
$result_tp_num=mysql_num_rows($result_tp);
echo"<title>$result_all[0]</title>";
for($i=1;$i<$result_tp_num;$i++){
$seek=mysql_data_seek($result_tp,$i);
$row=mysql_fetch_row($result_tp);
$ps[$i]=$row[1];//*把票数放到数组ZHUTI中
$zhuti[$i]=$row[0];//*把选项放到数组ZHUTI中
$piaosuall=$piaosuall+$ps[$i];//*总票数
}
echo"<font color=#cc3300>".$result_all[0]."</font>(共".$piaosuall."人参加投票)<br><br>";//*显示主题
for($k=1;$k<$result_tp_num;$k++){
$percent=round($ps[$k]/$piaosuall*10000)/100;//*计算每个选项所占的百分比
echo$zhuti[$k].":".$ps[$k]."人(".$percent."%)<br>";//*显示每个选项
}
?>
<p align="center">
<a href=javascript:window.close()><u>关闭</u></a></p>