会员登陆  支付方式  联系我们  在线客服  网站地图       
首页 关于域浪 互联网数据中心业务、主机托管、主机租用、机架租用、带宽租用、机房介绍、机房对比、CCN网络加速 adsl专线、深圳adsl专线 虚拟主机、域名注册、数据库、企业邮局、动态域名 网络安全、网络临近平台、安全服务、防火去墙租用、安全产品、域浪抗DDOS防火墙、NetScreen防火墙 技术支持  
   当前位置:首页 >> 技术支持 >> PHP编程技巧 >> 一个简单的PHP投票系统
 
精华文章
    一个用PHP实现的UBB类  
    为吸引Oracle用户 IBM...  
    用PHP连mysql和oracle...  
    用PHP发邮件  
    在PHP中使用灵巧的体系...  
    使用PHP连接LDAP服务器...  
    PHP中的Java扩展  
    一个简单的PHP投票系统...  
    用PHP写超级简单的发送...  
    用PHP处理多个同名复选...  
    定制php4的session功能...  
    在PHP中实现进程间通讯...  
    用PHP实现文件上传二法...  
    php做柱型图的函数  
    用PHP实现上传的ZIP文...  
    ASP判断文件地址是否有...  
    PHP做Shell语言  
    用PHP动态生成虚拟现实...  
    PHP4.0数组相关函数的...  
    PHP应用提速面面观  
    怎样用PHP来给网页做导...  
    如何用php作线形图的函...  
    用javascript+PHP随机...  
    用phpUnit帮你调试php...  
    将PHP作为Shell脚本语...  
    用PHP调用数据库的存贮...  
    php中分页显示文章标题...  
    PHP生成动态WAP页面  
  更多>>  
   PHP编程技巧
 一个简单的PHP投票系统
建立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>  
  • 上一篇文章: PHP中的Java扩展
  • 下一篇文章: 用PHP写超级简单的发送邮件程序
  • 域浪网络ISP经营许可证 深圳地址:深圳市罗湖区宝安北路国际商品交易大厦七楼C30室
    Tel:0755-82266883/82267566 Fax:0755-82261966
    邮编:518000 
                        Copyright © 2006-2008 elang.cn All Rights Reserved 深圳市域浪网络技术有限公司版权所有