Buddy Ring Script for web ring surf ring use
I cobbled together this script for use in a ring surfing script. I couldn't find preexisting code that was free so I had to figure out how to write it myself. It was necessary to have code that would match the current record to the site id that was given to it in a string, and then also return the previous and next records. When a user has navigated to the beginning of the ring, then the "Previous" site link becomes the last site in the ring. When a user has navigated to the end of the ring, then the "Next" site link becomes the first site in the ring.
My first attempt was far more complicated than this final code. I realized I was trying to make it much more difficult than it actually was.
In essence, what you do is:
1. Return the current site identification key to the script, done here with a
querystring CInt((request.querystring("site"))).
2. Tell the record set to go to the first record. Name that record key as a
variable.
3. Tell the record set to go to the last record. Name that record key as a
variable.
4. Tell the record set to keep going backwards until it comes to a record id key
that is less than the current site identification key. Name that record key as a
variable.
5. Tell the record set to keep going forward until it comes to a record id key
that is greater than the current site identification key. Name that record key
as a variable.
6. Tell the record set that if the first record key isn't less than the current
record key, that the next "previous" record to go to is the last one.
7. Tell the record set that if the last record key isn't greater than the
current record key, that the next "next" record to go to is the first one.
8. Then do a response write or response redirection of each of the named
variables!
I haven't posted administration and signup pages and I haven't posted the database, because this file here was the one that was difficult to work out, as far as I was concerned. If anyone can't generate their own administration pages, they can buy them from me. ;)
This code may also be useful if you simply need to know how to cycle through a recordset forward and back and to get the current, previous and next records as a group of three.
<%@ Language="VBScript" %>
<% Option Explicit
'you may want to comment out the redirects to test script %>
<%
Response.expires = 0
Response.expiresabsolute = Now() - 1
Response.addHeader "pragma", "no-cache"
Response.addHeader "cache-control", "private"
Response.CacheControl = "no-cache"
Response.Buffer = True
%>
<%
dim CursorType,adOpenStatic
dim connection, recordset, sConnString, sql
dim intRandomNumber, intTotalRecords, i
sql = "SELECT * FROM SITES"
Set connection = Server.CreateObject("ADODB.Connection")
Set recordset = Server.CreateObject("ADODB.Recordset")
sConnString="PROVIDER=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Server.MapPath("buddyring.mdb")
'Open the connection to the database
connection.Open(sConnString)
recordset.Open sql, connection, 3, 3
intTotalRecords = recordset.RecordCount
recordset.movelast
dim strLast, strLurl
strLast = (recordset.Fields("siteID"))
strLurl = (recordset.Fields("URL"))
recordset.movefirst
dim strFirst,str1sturl
strFirst = (recordset.Fields("siteID"))
str1sturl = (recordset.Fields("URL"))
dim strNum
strNum = CInt((request.querystring("site")))
do until recordset.Fields("siteID")=strNum
recordset.MoveNext
loop
dim strRec, strURL
strRec = (recordset.Fields("siteID"))
strURL = (recordset.Fields("URL"))
response.write"First Record: " & strFirst &"<BR>"
response.write"Current Record: "& strRec & "<BR>"
response.write"Last Record: " & strLast &"<BR>"
dim strNPrev
dim strFURL
if strFirst < strNum then
do until recordset.Fields("siteID")<strNum
recordset.MovePrevious
loop
strNPrev = recordset.Fields("siteID")
strFURL = recordset.Fields("URL")
else
strNPrev = strLast
strFURL = strLurl
end if
response.write "Previous Record: " & strFURL & "?siteid="& strNPrev &"<BR>"
dim strNext
dim strNURL
if strNum < strLast then
do until recordset.Fields("siteID")>strNum
recordset.MoveNext
loop
strNext = recordset.Fields("siteID")
strNURL = recordset.Fields("URL")
else
strNext = strFirst
strNURL = str1sturl
end if
response.write "Next Record: " & strNURL &"?siteid=" & strNext &"<BR>"
if request.querystring("pg")="prev" then
response.redirect strFURL & "?siteid="& strNPrev
elseif request.querystring("pg")="next" then
response.redirect strNURL &"?siteid=" & strNext
elseif request.querystring("pg")="random" then
Dim rndMax
rndMax = CInt(recordset.RecordCount)
recordset.MoveFirst
Dim rndNumber
Randomize Timer
rndNumber = Int(RND * rndMax)
recordset.Move rndNumber
Response.Redirect(recordset("URL"))
end if
recordset.Close
Set recordset=Nothing
connection.close
Set connection=Nothing
%>