国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > PHP > 正文

PHP實例:用PHP編寫的網(wǎng)上調(diào)查投票系統(tǒng)

2024-05-04 23:02:51
字體:
供稿:網(wǎng)友

這是一個簡單的投票程序,對于剛學php和朋友來說是一個很不錯的入門程序。在這里給大家介紹一下,希望能對朋友們有所幫助。

該系統(tǒng)是由以下四個文件組成的:有html調(diào)查表單的survey.htm,實現(xiàn)調(diào)查功能的survey.php,記錄調(diào)查項目的data.txt和記錄調(diào)查結(jié)果的survey.txt.其中data.txt和survey.txt我們可以用notepad分別創(chuàng)建之,并傳到程序目錄下。文件data.txt中存的是要進行調(diào)查的項目,注意每個項目應(yīng)占一行;而survey.txt則可以是一個什么內(nèi)容也沒有的空文件。

survey.htm的代碼可以如如下所示:

<html>
<head>
<title>survey</title>
</head>
<body>
<form method="post" action="survey.php">
  <p><input type="radio" value="0" name="vote">調(diào)查項目一</p>
  <p><input type="radio" name="vote" value="1">調(diào)查項目二</p>
  <p><input type="radio" name="vote" value="2">調(diào)查項目三</p>
  <p><input type="radio" name="vote" value="3">調(diào)查項目四</p>
  <p><input type="radio" name="vote" value="4">調(diào)查項目五</p>
  <p><input type="hidden" name="go"  value="1">
  <p><input type="submit" value="提交" name="b1"></p>
  <a href="survey.php?result=1">查看結(jié)果</a>
</form>
</body>
</html>

注意文件data.txt中的調(diào)查項目與上面的調(diào)查項目在個數(shù)和排列順序必須保持一致,否則會出錯或調(diào)查的結(jié)果不準確。同時為了將調(diào)查結(jié)果顯示成條形圖形式,應(yīng)該準備若干種不同顏色的條形圖片。如:0.gif,1.gif,2.gif,3.gif,4.gif等.

以下是實現(xiàn)調(diào)查功能的survey.php代碼:

<?
    $data="data.txt";
    $votes="survey.txt";
    $dataf=file($data);        /*讀出調(diào)查項目文件中的項目*/
     $file_votes=fopen($votes, "r");
  $line_votes=fgets($file_votes, 255);  /*讀出已經(jīng)記錄的調(diào)查結(jié)果*/
  fclose($file_votes);
  $single_vote=explode("|", $line_votes); /* 并將數(shù)據(jù)按指定的字串切開,再將字串傳回到數(shù)組變量中  */
   if ($result!=1)         /*如果已經(jīng)接受了調(diào)查*/
   {
    $file_votes=file($votes, "r");
    if ($remote_addr == $file_votes[1])                           /*檢查是不是同一個人*/
      {
       echo "<center><font color=red>您已投過票了,謝謝您的參與!</font></center>";
       exit;
      }
    /*如果ip不重復,則執(zhí)行以下程序*/
    $ficdest=fopen($votes, "w");
    for ($i=0; $i<=count($dataf)-1; $i++)
      {
         if ($i == $vote)
         {                                 /*判斷選擇了哪個項目*/
          $single_vote[$i]+=1;
         }
             fputs($ficdest, "$single_vote[$i]|"); /*將數(shù)據(jù)寫回文件*/
      }
       fputs($ficdest, "/n$remote_addr");/* //寫入投票者ip*/
    fclose($ficdest);
    $result=1; /*投票成功*/
  }
  /*寫入投票結(jié)果后并顯示投票結(jié)果*/
  if ($result==1)
  {
   echo "<table cellpadding=10>";
   for ($i=0; $i<=count($dataf)-1; $i++)
    {
     /*取得投票總數(shù)*/
     $tot_votes+=$single_vote[$i];
    }
   for ($i=0; $i<=count($dataf)-1; $i++)
    {
     $imag=strval($i).".gif";/*判斷用哪種條形圖片來顯示統(tǒng)計結(jié)果*/
      $stat[$i]=$single_vote[$i]/$tot_votes*100;  /*計算百分比*/
     $scla=$stat[$i]*5;/*條形圖和放大倍數(shù),這里是安百分數(shù)的5倍的相素的寬度來顯示的*/
     echo "<tr><td><li><font face=verdana size=2>";
     echo "$dataf[$i]</font></td><td align=left><font face=verdana size=2>";
     echo "<img src=/"$imag/" height=20 width=$scla align=middle>&nbsp;";/*輸出條形碼圖*/
     printf("%.1f", "$stat[$i]");
     echo "%</font></td><td align=center><font face=verdana size=2>";
     /*輸出本欄目投票數(shù)*/
     echo "$single_vote[$i]</font>";
     echo "</td></tr>";
   }
   echo "</table><p>";
   echo "<font face=verdana size=2>總投票數(shù):$tot_votes </font>";
}
?>

  說明:

   在這里為了防止一人多投是采用記錄最近的一位投票者的ip的方法來實現(xiàn)的,而最近的一位投票的ip地址是web客戶機在對服務(wù)器發(fā)出請求時存儲在環(huán)境變量remote_addr中的。

  我也是一個初學者,關(guān)于這篇文章可能有許多錯誤和不當之處歡迎各位提出寶貴的意見和建議。謝謝!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 江津市| 苗栗县| 宁陵县| 陵川县| 济源市| 寻乌县| 平陆县| 山丹县| 竹溪县| 合阳县| 东丽区| 永安市| 扶沟县| 兖州市| 吴川市| 徐闻县| 屯留县| 巴南区| 新竹县| 鹰潭市| 磴口县| 方城县| 宕昌县| 尤溪县| 长丰县| 泾阳县| 曲沃县| 含山县| 门头沟区| 始兴县| 富民县| 定日县| 瑞丽市| 水富县| 沾化县| 锡林浩特市| 崇礼县| 辰溪县| 逊克县| 进贤县| 横峰县|