<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      用ASP編寫網上調查投票系統

      [摘要]現在越來越多的朋友都建立了自己的個人主頁,看著計數器的數字每日不斷地增加,心里有說不出的高興---自己的東東終于有個賞識了。但如果才能了解網友們到底喜歡那方面的內容呢?我能不能搞一個調查系統,在網友...

      現在越來越多的朋友都建立了自己的個人主頁,看著計數器的數字每日不斷地增加,心里有說不出的高興---自己的東東終于有個賞識了。但如果才能了解網友們到底喜歡那方面的內容呢?我能不能搞一個調查系統,在網友中進行調查呢?這成了每個網主的心頭大事。當然可以啦,只要你申請的免費空間有支持ASP環境,下面我教大家如何利用數據庫建立一套線上投票調查系統,你只要將調查有主題,調查選項存入數據庫,就可以通過ASP將投票調查系統顯示在客戶端,而且這套系統可以存入多筆調查主題,只要在投票起始日期和投票截止日期設定無誤,則調查主題將會定時更新,完全不需擔心調查主題不夠新穎,F在我們就開始建立這一套投票調查系統,首先你必須先建立一個關聯性數據庫,數據庫中包含兩個資料表格,表格字段定義如下: Poll PollOption PollID 自動編號 PollOptionID 自動編號 PollQuestion 文字 PollID 數字 DateStart 日期/時間 QuestionText 文字 DateEnd 日期/時間 Votes 數字這兩個資料是以PollID為關聯性所建立的,如果你不了解該如何建立表格關聯性,沒關系,我已經將數據庫的關聯性設定好了,或者你可以去參考有關數據庫的書,數據庫建立完成之后馬上就讓我們進入投票調查系統原始程序vote.asp vote.asp
      <% Language=VBScript %>
      <!--#include file="adovbs.inc"-->
      <%
      Dim strConnect (注:指定數據庫路徑)
      strConnect = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath
      ("/asp/poll/poll.mdb") & ";DefaultDir=" & Server.MapPath("/asp/poll") & ";DriverId=25;FILE=MS Access;MaxBufferSize=512;PageTimeout=5"
      Const iWidth = 200 (注:定義投票接口表格寬度)
      Set objConn = Server.CreateObject("ADODB.Connection")(注:建立數據庫連結)
      objConn.Open strConnect (注:開啟數據庫連結)
      Dim objRS
      Set objRS = Server.CreateObject("ADODB.Recordset")(注:建立數據庫對象集合) 上面完成了投票調查系統原始程序vote.asp,為了讓利用這個網上投票調查系統所得的結果更具真實性,下面將要建議一個檢測系統,檢查訪問者今天是否已經投過票了。 Dim strVoted
      strVoted = Request.Cookies("Voted")(注:利用Cookies值判定訪問者是否投過票) Dim strSQL
      %> 為了不讓訪問者在同一天內重復投票,所以我們用了一個Request.Cookies("Voted") 來限制訪問者一天只能投一次票,這樣子的方法比較能夠看出投票結果的客觀性,如何控制Cookies,這個在下面我向大家介紹: <BODY>
      <% if strVoted = "Yes" then (注:如果已經投過票了,就顯示投票結果)
      strSQL = "SELECT PollOption.PollOptionID, PollOption.QuestionText,
      PollOption.Votes, " & "Poll.PollQuestion " & _
      "FROM Poll INNER JOIN PollOption ON Poll.PollID = PollOption.PollID " & _
      "WHERE Poll.DateStart <= #" & Date & "# AND Poll.DateEnd >= #" & Date & "#;" (注:從 PollOption資料表格中選取PollOptionID、QuestionText、Votes三個字段的值,選取的條件是兩個資料表格中PollID相同的資料,而且投票起始日期必須在今天之前,投票截止日期必須在今天之后。) (注:建立一個動態數組,不管答案選項有多少都能函括在內。) Dim PollOptions()
      Redim PollOptions(objRS.RecordCount,2)
      Dim iCount, iTotalVotes, strPollName
      iCount = 0
      iTotalVotes = 0
      strPollName = CStr(objRS("PollQuestion"))
      Do While Not objRS.EOF
      PollOptions(iCount,1) = CInt(objRS("Votes"))
      PollOptions(iCount,2) = CStr(objRS("QuestionText"))
      iTotalVotes = iTotalVotes + PollOptions(iCount,1)
      iCount = iCount + 1
      objRS.MoveNext
      Loop
      %>
      <TABLE BORDER=0 CELLSPACING=0 WIDTH=<%=iWidth%>>
      <TR><TH BGCOLOR=6666f0><FONT COLOR=WHITE FACE=Arial SIZE=2>
      <%=strPollName%>
      </FONT></TH></TR>
      <TR>
      <TD BGCOLOR=000000>
      <%
      Dim iLoop
      For iLoop = 0 to iCount-1 %>
      <FONT FACE=Arial SIZE=2 color=ffffff><%=PollOptions(iLoop,2)%> (<%
      =FormatPercent(PollOptions(iLoop,1)/iTotalVotes,1)%> )
      </FONT><%'先將投票選項印出, 再將投票結果印出%><%'數組中(0,1)(1,1)(2,1)放的是投票結果,
      而數組中(0,2)(1,2)(2,2)放 的是投票選項%>
      <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0>
      <TR><TD WIDTH=<%=CInt((PollOptions(iLoop,1)/iTotalVotes)*iWidth)%>
      <BGCOLOR=yellow>
       </TD>
      </TR>
      </TABLE>
      <BR>
      <% Next %>
      <FONT FACE=Arial SIZE=2>總投票數: <%=iTotalVotes%></FONT>
      </TD></TR></TABLE> 下面這張圖就是投票結果 
      圖1 如果還沒投票,就顯示投票窗口: <%
      else
      strSQL = "SELECT PollOption.PollOptionID, PollOption.QuestionText,
      Poll.PollQuestion " & "FROM Poll INNER JOIN PollOption ON Poll.PollID =
      PollOption.PollID " & "WHERE Poll.DateStart <= #" & Date & "# AND Poll.DateEnd >
      = #" & Date & "#;" (注:從 PollOption資料表格中選取PollOptionID、QuestionText、Votes三個字段的值,選取的條件是兩個資料表格中PollID相同的資料,而且投票起始日期必須在今天之前,投票截止日期必須在今天之后。) objRS.Open strSQL, objConn
      %>
      <FORM METHOD=POST ACTION="voteResults.asp" ONSUBMIT="return
      OneOptionChecked();" NAME=frmPoll>
      <TABLE BORDER=0 CELLSPACING=0 WIDTH=<%=iWidth%>>
      <TR><TH BGCOLOR=6666f0><FONT COLOR=WHITE FACE=Arial SIZE=2>
      <%=objRS("PollQuestion")%>
      </FONT></TH></TR><TR><TD BGCOLOR=000000>
      <%
      Do While Not objRS.EOF %>
      <INPUT TYPE=RADIO NAME=radPoll value="<%=objRS("PollOptionID")%>">
      <FONT FACE=Arial SIZE=2 color=white><%=objRS("QuestionText")%></FONT>
      <BR>
      <%
      objRS.MoveNext
      Loop
      %>
      <INPUT TYPE=HIDDEN NAME="URLFrom" value="<%=Request.ServerVariables
      ("SCRIPT_NAME")%>">
      <BR><CENTER><INPUT TYPE=SUBMIT value="投票去!"></CENTER>
      </TD></TR></TABLE>
      </FORM>
      <P>
      <% end if %>
      </BODY>
      </HTML>
      <%
      objRS.Close
      Set objRS = Nothing
      objConn.Close
      Set objConn = Nothing
      %> 下圖就是顯示的投票

      接下來就到了編寫處理投票結果的程序voteresults.asp voteresults.asp
      <%@ Language=VBScript %>
      <% Option Explicit %>
      <%
      Response.ExpiresAbsolute = Now() – 1(注:設定網頁保留在客戶端Cach中之期限為昨天,當然你可以根據你的情況進行設定。)
      下面先將投票值加一
      Dim objConn
      Set objConn = Server.CreateObject("ADODB.Connection")
      objConn.ConnectionString = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & _
      Server.MapPath("Poll.mdb") & ";"
      objConn.Open
      (注:將表格中傳來的radPoll字段(PollOptionID)傳給iPollOptionID)
      Dim iPollOptionID
      iPollOptionID = CInt(Request("radPoll"))
      objConn.Execute "UPDATE PollOption SET Votes = Votes + 1 " & _
      "WHERE PollOptionID = " & iPollOptionID
      (注:關閉數據庫。)
      objConn.Close
      Set objConn = Nothing
      (注:投票完之后將Cookies值寫回訪問者硬盤)
      Response.Cookies("Voted") = "Yes"
      (注:將Cookies值過期日設為一天)
      Response.Cookies("Voted").Expires = DateAdd("d",1,Date)
      Response.Cookies("Voted").Path = "/asp/poll"(注:投票檔案的相對路徑。)
      注:投票完之后就將訪問者導回vote.asp
      Response.Redirect Request("URLFrom")
      %> 到這里一個簡單的投票調查系統已經完成了,希望能對你有所幫助。



      日韩精品一区二区三区高清