|          
如何使用ASP在自己的网站建立投票机制(一)
 
 翻译整理
 
 一个很不错的建立自己的投票系统的ASP程序大家仔细读读,只要能够理解中间的关键技术,就能够在自己的网站上建立自己的投票站了。文件整理得很仓促,希望大家谅解。
 版权所有:
 ASP Polls
 version 1.0
 Tipped Cow Development and Adrenalin Labs
 结构简单介绍:
 ACCESS数据库设计结构:
 poll表主要字段名称:PollName,PollCreator,PollQuestion,Password,Choice1,Choice2
 Choice3,Choice4,Choice5,ID(自动编号),GetName
 pollresults表字段:PollID,PollAnswer,Name
 1.文件db.inc
 <%
 Application("ASP_Poll") = "ASP_Poll"
 cnString = "DRIVER={Microsoft Access Driver (*.mdb)}; "
 cnString = cnString & "DBQ=" & Server.MapPath("Events.mdb")
 Application("ASPPollDSN") = cnString
 %>
 1.文件creat_poll1.asp
 <% Title="Poll Generator" %>
 <head> <link rel="STYLESHEET" type="text/css" href="style.css">
 <title><%=Title%></title>
 </head>
 <body>
 <div align="left"><img src=http://cfan.net.cn/info/"asp_poll.gif" width="231" height="90"><br>Another joint product from <a href="http://www.ncws.com/tippycow">Tipped Cow Development</a> and <a href="http://dstoflet.calweb.com">Adrenalin Labs</a>
 <br><br>
 </div>
 <center>
 
 <%
 Response.Write "<font face=arial>"
 If Request("errormessage") <> "" Then
 Response.Write "<b>Error! </b>" & Request("errormessage")
 Else
 Response.Write "Please complete the form below to begin creating your own poll."
 End If
 %>
 
 <br><br>
 <table border=2 cellspacing=0 cellpadding=0><tr><td>
 <form method="post" action="create_poll2.asp">
 
 
 <table border=0 cellspacing=0 cellpadding=10 width=500><tr>
 <td colspan=2 bgcolor=#000000 align=center class="bold2">
 Enter Your Name as the Poll Creator
 </td>
 </tr><tr>
 <td bgcolor=#ffffff width=25% class="bold">Poll Creator:</td>
 <td bgcolor=#ffffff>
 <input type="text" name="creator" value="<%=Request("creator")%>" size=20 class="input">
 </td>
 </tr>
 
 
 </td></tr>
 <tr><td>
 
 <table border=0 cellspacing=0 cellpadding=10 width=500><tr>
 <td colspan=2 bgcolor=#000000 align=center class="bold2">
 Create a Password For Your Poll So That You Can Modify It At A
 Later Time
 </td>
 </tr><tr>
 <td bgcolor=#ffffff width=25% class="bold">Poll Admin Password:</td>
 <td bgcolor=#ffffff>
 <input type="password" name="password" value="<%=Request("password")%>" size=10 maxlength=10 maxsize=10 class=input>
 </td>
 </tr>
 
 
 </td></tr>
 <tr><td>
 
 <table border=0 cellspacing=0 cellpadding=10 width=500><tr>
 <td colspan=2 bgcolor=#000000 align=center class="bold2">
 Give Your Poll a Unique Name
 </td>
 </tr><tr>
 <td bgcolor=#ffffff width=25% class="bold">Poll Name:</td>
 <td bgcolor=#ffffff>
 <input type="text" name="name" value="<%=Request("name")%>" size=20 class=input>
 </td>
 </tr>
 
 
 <table border=0 cellspacing=0 cellpadding=10 width=500><tr>
 <td colspan=2 bgcolor=#000000 align=center class="bold2">
 Do you want to have the user enter their name?
 </td>
 </tr><tr>
 <td bgcolor=#ffffff width=25% class="bold">Require user to enter their name:</td>
 <td bgcolor=#ffffff class="bold">
 Yes<input type="radio" name="GetName" value="1"><br>
 No <input type="radio" name="GetName" value="0" CHECKED>
 </td>
 </tr>
 
 
 </td></tr>
 <tr><td>
 
 <table border=0 cellspacing=0 cellpadding=10 width=500><tr>
 <td colspan=3 bgcolor=#000000 align=center class="bold2">
 Select Poll Type
 </td>
 </tr><tr>
 
 
 <td colspan=2 bgcolor=#ffffff class="bold">What type of poll question
 do you wish to create?</td>
 <td bgcolor=#ffffff class="bold">
 <input type="radio" name="polltype" value="yes_no">Yes/No<br>
 <input type="radio" name="polltype" value="multiple_choice">Multiple Choice<br>
 </td>
 </tr>
 
 </td></tr>
 <table width=500><tr>
 <td colspan=3 align=right>
 <input type="submit" value=" Next " class="inline">
 </td></tr>
 
 
 </center>
 </body>
 </html>
 3.文件connect.asp
 <%
 id = Request("id")
 If id = "" Then
 id = 0
 End If
 num = Request("choice")
 
 If num <> "" Then
 
 Set conn = Server.CreateObject("ADODB.Connection")
 dsnpath = "DRIVER={MICROSOFT ACCESS DRIVER (*.mdb)}; "
 dsnpath = dsnpath & "DBQ=" & Server.MapPath("Events.mdb")
 conn.open dsnpath
 Set rs = Server.CreateObject("ADODB.RecordSet")
 rs.Open "PollResults", conn, 3, 3
 rs.AddNew
 rs("PollID") = Cint(id)
 rs("Name") = Request("Name")
 rs("PollAnswer") = Cint(num)
 rs.Update
 rs.Close
 set rs = Nothing
 conn.Close
 set conn = Nothing
 End If
 
 If Request("return_page") <> Empty Then
 Response.Cookies("PollID") = id
 Response.Redirect Request("return_page")
 End If
 %>
 
 <html>
 <body bgcolor="#4f4f4f" text="#c0c0c0" link=#f5fcdc vlink=#f5fcdc>
 <center>
 
 <% If num <> "" Then %>
 <br><br>
 <table border=0 cellspacing=0 cellpadding=0><tr>
 
 <td colspan=3 align=center><font face="verdana">
 Your selection has been recorded.
 </td></tr>
 
 
 <% End If %>
 <br><br>
 <%
 
 Set conn = Server.CreateObject("ADODB.Connection")
 sql = "select * from Poll where ID = " & Cint(id)
 dsnpath = "DRIVER={MICROSOFT ACCESS DRIVER (*.mdb)}; "
 dsnpath = dsnpath & "DBQ=" & Server.MapPath("Events.mdb")
 conn.open dsnpath
 Set rs = Conn.Execute(sql)
 If rs.EOF = False Then
 %>
 <table border=1 cellspacing=0 cellpadding=5 width=500 bordercolor=#2f2f4f><tr>
 <td colspan=3 bgcolor=#2f2f4f align=center><font face="verdana" color=#f5fcdc>
 <%=rs("PollQuestion")%>
 </td></tr>
 <%
 Dim Choices(6)
 Dim Responses(6)
 For I=1 To 5
 choice = rs("Choice" & I)
 Choices(I) = choice
 If choice <> "" Then
 Set conn2 = Server.CreateObject("ADODB.Connection")
 sql = "select COUNT(PollAnswer) from PollResults where PollID = " & Cint(id) & " AND PollAnswer=" & I
 dsnpath = "DRIVER={MICROSOFT ACCESS DRIVER (*.mdb)}; "
 dsnpath = dsnpath & "DBQ=" & Server.MapPath("Events.mdb")
 conn2.open dsnpath
 Set rs2 = Conn.Execute(sql)
 If rs2.EOF = False Then
 Response.Write "<tr><td colspan=2 bgcolor=#4f4f4f align=center width=400><font face=verdana color=#f5fcdc>"
 Response.Write choice
 Response.Write "</td>"
 Responses(I) = rs2(0)
 Response.Write "<td colspan=1 bgcolor=#4f4f4f align=right><font face=verdana color=#f5fcdc><b>" & rs2(0) & "</b></td>"
 Response.Write "</tr>"
 End If
 rs2.Close
 conn2.Close
 End If
 Next
 End If
 %>
 
 
 
 <br><br>
 
 <table >
 <td colspan=3 align=center><font face="arial">
 <font face="ms sans serif"><b> Polls Results</b></font>
 </td></tr>
 
 <%
 Total = 0
 For I=1 To 5
 responseCount = Responses(I)
 If responseCount <> "" Then
 Total = Total + Cint(responseCount)
 End If
 Next
 For I=1 To 5
 choice = Choices(I)
 responseCount = Responses(I)
 If choice <> "" Then
 Response.Write "<tr><td colspan=1 align=left><font face=arial>"
 Response.Write choice
 Response.Write "</td>"
 Response.Write "<td colspan=2 width=400><table border=1 cellspacing=0><tr><td bgcolor=blue align=center width=" & ConvertToPix(responseCount) & "><font face=ms sans serif color=white><b>" & ConvertToPercent(responseCount) & "</td></tr></td>"
 Response.Write "</tr>"
 End If
 Next
 
 Function ConvertToPix(sz)
 If sz = 0 Then
 ConvertToPix = 0
 Else
 ConvertToPix = Cint(400/Total * sz)
 End If
 End Function
 
 Function ConvertToPercent(sz)
 If sz = 0 Then
 ConvertToPercent = "0%"
 Else
 ConvertToPercent = FormatPercent(sz/Total, 2)
 End If
 End Function
 
 %>
 
 
 
 
 <% If num = "" Then %>
 <br><br>
 <table border=0 cellspacing=0 cellpadding=0><tr>
 
 <td colspan=3 align=center><font face="verdana">
 <a href="default.asp?ID=<%=id%>">Add Your Vote</a>
 </td></tr>
 
 
 <% End If %>
 
 <br><br>
 <table width=100%><tr><td align=right>
 <table border=1 cellpadding=5 cellspacing=0 bordercolor=#f5fcdc><tr><td bgcolor=#2f2f4f>
 <font face=verdana size=+1><a href=javascript:history.back()>Back</a>
 </td></tr>
 </td></tr>
 
 </center>
 </body>
 </html>
 
 -------------------------------------------------
 
 如何使用ASP在自己的网站建立投票机制(二)
 
 
 翻译整理
 
 
 4、文件default.asp
 <%
 ID = Request("ID")
 If ID = "" Then
 ID = 30
 End If
 Title = "Polls (Create your own poll)"
 %>
 
 <html>
 
 <head><link rel="STYLESHEET" type="text/css" href="style.css">
 <title>ASP Polls</title>
 
 <script language="JavaScript">
 
 function gatherForm(form){
 if(form.Mode[0].checked){
 form.submit();
 }else{
 form.action="collect.asp";
 form.submit();
 }
 }
 
 </script>
 </head>
 
 
 <body>
 <div align="left"><img src=http://cfan.net.cn/info/"asp_poll.gif" width="231" height="90"><br>Another joint product from <a href="http://www.ncws.com/tippycow">Tipped Cow Development</a> and <a href="http://dstoflet.calweb.com">Adrenalin Labs</a>
 <br><br>
 </div>
 <table width="100%" cellspacing="0" cellpadding="2">
 <tr>
 <td align="left" width="25%" valign="top" class="bold">
 <form action="default.asp">
 <table width="100" border="1" bordercolor=#ccccff>
 <tr>
 <td>
 <table border=0 cellspacing=0 cellpadding=5 bgcolor=#4f4f4f><tr>
 <td colspan=3 bgcolor=#000000 align=center class="bold2">Select A Poll</td>
 </tr><tr>
 <td colspan=3 bgcolor=#000000 align=center>
 <select name="ID" onChange="gatherForm(this.form)" class="input">
 <%
 Set conn = Server.CreateObject("ADODB.Connection")
 conn.Open Application("ASPPollDSN")
 sql = "select * from Poll"
 Set rs = conn.Execute(sql)
 Do While Not rs.EOF
 %>
 
 
 <option value="<%=rs("ID")%>"><%=rs("PollName")%>
 
 <%
 rs.MoveNext
 Loop
 %>
 
 </select>
 </tr>
 
 <tr>
 <td colspan=3 align=right bgcolor=#FFFFFF class="bold">
 Vote In Poll:<input type="radio" name="Mode" value="Vote" CHECKED><br>
 View Results:<input type="radio" name="Mode" value="View">
 </td></tr>
 
 <tr>
 <td colspan=3 align=right bgcolor=#000000 align=center>
 <input type="button" value=" Go " onClick="gatherForm(this.form)" class="inline">
 </td></tr>
 
 
 </td>
 </tr>
 </form><br>
 <div align="left" class="bold">
 <a href="create_poll1.asp">Create your own poll</a><br>
 <a href=javascript:history.back()>Back</a>
 </div>
 </td>
 
 <td align="center" width="75%" valign="top">
 <table width="100" border=1 cellspacing=2 cellpadding=0 bordercolor=#ccccff><tr><td>
 <form method="post" action="collect.asp">
 <input type="hidden" name="id" value="<%=id%>">
 
 <%
 Set conn = Server.CreateObject("ADODB.Connection")
 conn.Open Application("ASPPollDSN")
 sql = "select * from Poll where ID = " & ID
 Set rs = conn.Execute(sql)
 If rs.EOF = False Then
 %>
 
 <table border=0 cellspacing=0 cellpadding=10 bgcolor=#4f4f4f><tr>
 <!-- <td colspan=3 bgcolor=#2f2f4f align=center><font face="verdana" color=#f5fcdc>
 Poll: <%=rs("PollName")%>
 </td> -->
 </tr><tr>
 <td colspan=3 bgcolor=#000000 align=left class="bold2"><%=rs("PollQuestion")%>
 </tr>
 <%
 For I=1 To 5
 choice = rs("Choice" & I)
 If choice <> "" Then
 %>
 <tr> <!-- <td width=50 colspan=1 bgcolor=#4f4f4f> </td> -->
 <td colspan=2 bgcolor=#FFFFFF class="bold" align="left">
 <%=choice%></td><td bgcolor=#FFFFFF align="left"><input type="radio" name="choice" value="<%=I%>">
 </td></tr>
 <%
 End If
 Next
 %>
 
 </tr>
 <% If rs("GetName") = "1" Then %>
 <tr><td colspan=1 align=right bgcolor=#FFFFFF class="bold">
 Your Name:</td>
 <td colspan=2 align=right bgcolor=#FFFFFF>
 <input type="text" name="Name">
 </td></tr>
 <% End If %>
 <tr>
 <td colspan=3 align=right bgcolor=#000000 align=center>
 <input type="submit" value="Submit Vote" class="inline">
 </td></tr>
 
 
 <%
 Else
 Response.Write "Invalid Poll Id Request!"
 End If
 %>
 </td></tr></form>
 
 </td>
 </tr>
 
 </body>
 </html>
 
 5、文件global.asa
 <SCRIPT LANGUAGE="VBScript" RUNAT="SERVER">
 
 Sub Application_OnStart
 Application("ASP_Poll") = "ASP_Poll"
 cnString = "DRIVER={Microsoft Access Driver (*.mdb)}; "
 cnString = cnString & "DBQ=" & Server.MapPath("Events.mdb")
 Application("ASPPollDSN") = cnString
 End Sub
 </SCRIPT>
 
 6、文件pool.inc
 <%
 DBPath = Server.MapPath("/poll/Events.mdb")
 ID = 28
 If Request.Cookies("PollID") = CStr(ID) Then
 ShowDisplay
 Else
 ShowVote
 End If
 
 Function ConvertToPercent(total, sz)
 If sz = 0 Then
 ConvertToPercent = "0%"
 Else
 ConvertToPercent = FormatPercent(sz/total, 2)
 End If
 End Function
 
 Sub ShowVote
 
 %>
 
 <div align=right>
 <table width=125 border=1 cellspacing=0 cellpadding=0><tr><td>
 <form method="post" action="/poll/collect.asp">
 <input type="hidden" name="id" value="<%=id%>">
 <input type="hidden" name="return_page" value="<%=Request.ServerVariables("PATH_INFO")%>">
 <%
 Set conn = Server.CreateObject("ADODB.Connection")
 dsnpath = "DRIVER={MICROSOFT ACCESS DRIVER (*.mdb)}; "
 dsnpath = dsnpath & "DBQ=" & DBPath
 conn.open dsnpath
 sql = "select * from Poll where ID = " & ID
 Set rs = conn.Execute(sql)
 If rs.EOF = False Then
 %>
 
 <table width=125 border=0 cellspacing=0 cellpadding=2 bgcolor=#4f4f4f>
 <tr>
 <td colspan=3 bgcolor=#2f2f4f align=center>
 <%=rs("PollQuestion")%>
 </td>
 </tr>
 <%
 For I=1 To 5
 choice = rs("Choice" & I)
 If choice <> "" Then
 %>
 <tr>
 <td colspan=2 bgcolor=#000000 valign=top width=80%>
 <%=choice%> </td><td valign=top colspan=1 width=20% bgcolor=#000000> <input type="radio" name="choice" value="<%=I%>">
 </td></tr>
 <%
 End If
 Next
 %>
 
 <tr>
 <td colspan=3 align=center bgcolor=#2f2f4f align=right>
 <input type="submit" value="Submit" class=nav>
 </td></tr>
 
 <%
 End If
 %>
 
 </td></tr></form>
 
 </center>
 
 <%
 
 End Sub
 
 
 Sub ShowDisplay
 
 Set conn = Server.CreateObject("ADODB.Connection")
 sql = "select * from Poll where ID = " & Cint(ID)
 dsnpath = "DRIVER={MICROSOFT ACCESS DRIVER (*.mdb)}; "
 dsnpath = dsnpath & "DBQ=" & DBPath
 conn.open dsnpath
 Set rs = Conn.Execute(sql)
 If rs.EOF = False Then
 Dim Choices(6)
 Dim Responses(6)
 For I=1 To 5
 choice = rs("Choice" & I)
 Choices(I) = choice
 If choice <> "" Then
 Set conn2 = Server.CreateObject("ADODB.Connection")
 sql = "select COUNT(PollAnswer) from PollResults where PollID = " & Cint(id) & " AND PollAnswer=" & I
 dsnpath = "DRIVER={MICROSOFT ACCESS DRIVER (*.mdb)}; "
 dsnpath = dsnpath & "DBQ=" & DBPath
 conn2.open dsnpath
 Set rs2 = Conn.Execute(sql)
 If rs2.EOF = False Then
 Responses(I) = rs2(0)
 End If
 rs2.Close
 conn2.Close
 End If
 Next
 %>
 <div align="right">
 <table border=1 cellspacing=0 cellpadding=2><tr><td>
 <table width=125 border=0 cellspacing=0><tr>
 <td colspan=2 bgcolor=#2f2f4f align=center class=orgbold>ASP Poll
 </td></tr>
 <tr><td colspan=2 align=center bgcolor=#ccccff class=black>
 Q:<%=rs("PollQuestion")%>
 </td></tr>
 
 <%
 Total = 0
 For I=1 To 5
 responseCount = Responses(I)
 If responseCount <> "" Then
 Total = Total + Cint(responseCount)
 End If
 Next
 For I=1 To 5
 choice = Choices(I)
 responseCount = Responses(I)
 If choice <> "" Then
 Response.Write "<tr><td colspan=1 align=left><font face=verdana size=-1 color=#f0f0f0>"
 Response.Write choice
 Response.Write "</td>"
 Response.Write "<td>" & ConvertToPercent(total, responseCount) & "</td>"
 Response.Write "</tr>"
 End If
 Next
 Response.Write "</td></tr></div>"
 End If
 End Sub
 %>
 </div>
 
 
 |