建立你网站的投票机制![翻译]

如何使用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="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>
</table>

</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>
</table>

</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>

<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>
</table>

</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>
</table>
</td></tr></table>
<table width=500><tr>
<td colspan=3 align=right>
<input type="submit" value=" Next " class="inline">
</td></tr>
</table>

</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>
</table>

<% 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
%>

</table>

<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></table></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

%>

</table>


<% 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>
</table>

<% 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></table>
</td></tr></table>

</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="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>

</table>
</td>
</tr>
</table></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>
</table>

<%
Else
Response.Write "Invalid Poll Id Request!"
End If
%>
</td></tr></form></table>

</td>
</tr>
</table>
</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>
</table>
<%
End If
%>

</td></tr></form></table>

</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 "</table></td></tr></table></div>"
End If
End Sub
%>
</div>


Zookeeper是一个分布式协调服务,它采用了ZAB协议(Zookeeper Atomic Broadcast Protocol)来实现分布式一致性。ZAB协议是一种基于Paxos算法的改进协议,它通过对节点的投票来实现分布式一致性。 在ZAB协议中,每个Zookeeper节点都可以扮演三种角色:Leader、Follower和Observer。Leader负责处理客户端请求、更新数据和同步数据,Follower和Observer负责接收来自Leader的消息并复制数据。当Leader节点失效时,Follower节点会通过投票选举新的Leader节点。 具体来说,当Follower节点发现Leader节点失效时,它会开始选举新的Leader节点。选举过程分为两个阶段: 1. Proposal阶段:Follower节点会向集群中的其他节点发送消息,请求投票。同时,它会记录下自己的编号和ZXID(Zookeeper Transaction ID)作为投票内容,ZXID表示节点最后一次同步的事务ID。 2. Voting阶段:收到投票请求的节点会比较投票内容,如果ZXID更大,则更新自己的投票内容并回复投票请求。如果ZXID相同,则比较节点编号,编号更大的节点优先投票。 当某个节点获得了超过半数的投票时,它就成为新的Leader节点。新的Leader节点会将自己的数据同步给其他节点,使得所有节点的数据保持一致。 总的来说,Zookeeper的投票机制通过多数派原则来保证分布式一致性,即只要超过半数的节点同意某个决策,就认为这个决策是有效的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值