一个简单的投票系统

建立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 ($insertmysql_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>