【www.gdgbn.com--系统相关】

head>
survey



 

调查项目一


 

调查项目二


 

调查项目三


 

调查项目四


 

调查项目五


 


 


  查看结果



 

注意文件data.txt中的调查项目与上面的调查项目在个数和排列顺序必须保持一致,否则会出错或调查的结果不准确。同时为了将调查结果显示成条形图形式,应该准备若干种不同颜色的条形图片。如:0.gif,1.gif,2.gif,3.gif,4.gif等。
以下是实现调查功能的survey.php代码:

以下为引用的内容:
    data="data.txt";
    votes="survey.txt";
    dataf=file(data);        /*读出调查项目文件中的项目*/
     file_votes=fopen(votes, "r");
  line_votes=fgets(file_votes, 255);  /*读出已经记录的调查结果*/
  fclose(file_votes);
  single_vote=explode("|", line_votes); /* 并将数据按指定的字串切开,再将字串传回到数组变量中  */
   if (result!=1)         /*如果已经接受了调查*/
   {
    file_votes=file(votes, "r");
    if (REMOTE_ADDR == file_votes[1])                           /*检查是不是同一个人*/
      {
       echo "

您已投过票了,谢谢您的参与!
";
       exit;
      }
    /*如果IP不重复,则执行以下程序*/
    ficdest=fopen(votes, "w");
    for (i=0; i<=count(dataf)-1; i++)
      {
         if (i == vote)
         {                                 /*判断选择了哪个项目*/ Chinaz.com

          single_vote+=1;
         }
             fputs(ficdest, "single_vote|"); /*将数据写回文件*/
      }
       fputs(ficdest, "\nREMOTE_ADDR");/* //写入投票者IP*/
    fclose(ficdest);
    result=1; /*投票成功*/
  }
  /*写入投票结果后并显示投票结果*/
  if (result==1)
  {
   echo "";
   for (i=0; i<=count(dataf)-1; i++)
    {
     /*取得投票总数*/
     tot_votes+=single_vote;
    }
   for (i=0; i<=count(dataf)-1; i++)
    {
     imag=strval(i).".gif";/*判断用哪种条形图片来显示统计结果*/
      stat=single_vote/tot_votes*100;  /*计算百分比*/
     scla=stat*5;/*条形图和放大倍数,这里是安百分数的5倍的相素的宽度来显示的*/
     echo "";
     echo "dataf
";
     echo " ";/*输出条形码图*/
     printf("%.1f", "stat");
     echo "%
";
     /*输出本栏目投票数*/
     echo "single_vote
";
     echo "";
   }
   echo "

";
   echo "总投票数:tot_votes ";
}
?> 

说明:
在这里为了防止一人多投是采用记录最近的一位投票者的IP的方法来实现的,而最近的一位投票的IP地址是WEB客户机在对服务器发出请求时存储在环境变量REMOTE_ADDR中的。

本文来源:http://www.gdgbn.com/aspjiaocheng/12139/