%
Dim englishHeader, englishFooter, francaisHeader, francaisFooter, language, currentPage, tableName
Dim searchKey, booleanFilter, resultsPerPage, numMatches
Dim keys, fileName(), fileNameTruncated(), descriptionFull()
language = "english"
currentPage = 0
tableName = "searchable_web_files"
searchKey = ""
languageFilter = "english"
booleanFilter = "AND"
resultsPerPage = 20
numMatches = 0
ParseForm()
If searchKey <> "" Then
Search()
End If
If language = "francais" Then
Response.Write "
recherche"
%> <%
Else
Response.Write "Search"
%> <%
End If
If numMatches > 0 Then
Output()
End If
If searchKey <> "" AND numMatches <= 0 Then
TryAgain()
End If
If searchKey = "" Then
DisplaySearchPage()
End If
If language = "francais" Then
%> <%
Else
%> <%
End If
%>
<%
Function ParseForm()
If Request.QueryString("searchKey") <> "" Then
searchKey = Request.QueryString("searchKey")
keys = Split(searchKey)
End If
If Request.QueryString("language") <> "" Then
language = Request.QueryString("language")
End If
If Request.QueryString("currentPage") <> "" Then
currentPage = Request.QueryString("currentPage")
End If
If Request.QueryString("booleanFilter") <> "" Then
booleanFilter = Request.QueryString("booleanFilter")
End If
If Request.QueryString("resultsPerPage") <> "" Then
resultsPerPage = Request.QueryString("resultsPerPage")
End If
End Function
%>
<%
'Search the database
Function Search()
Dim query
'Open the ODBC connection
Set SearchConn = Server.CreateObject("ADODB.Connection")
SearchConn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("/databases/naturewatch_website_search.mdb")
'Read matches from database
query = "SELECT file_id, file_name, language, description FROM " & tableName & " WHERE"
query = query & " language = '" & language & "' AND"
query = query & " (description like '%" & keys(0) & "%'"
For i = 1 To UBound(keys)
query = query & " " & booleanFilter & " description like '%" & keys(i) & "%'"
Next
query = query & ")"
Set RSSearch = CreateObject("ADODB.Recordset")
RSSearch.Open query, SearchConn, 1
numMatches = RSSearch.RecordCount
ReDim fileName(numMatches)
ReDim fileNameTruncated(numMatches)
ReDim descriptionFull(numMatches)
For j = 0 To (numMatches - 1)
fileName(j) = RSSearch("file_name")
fileName(j) = Replace(fileName(j), "C:/inetpub/wwwroot/", "http://www.naturewatch.ca/")
fileNameTruncated(j) = fileName(j)
If Len(fileNameTruncated(j)) > 80 Then
fileNameTruncated(j) = Left(fileNameTruncated(j), 77)
fileNameTruncated(j) = fileNameTruncated(j) & "..."
End If
descriptionFull(j) = RSSearch("description")
descriptionFull(j) = Left(descriptionFull(j), 300)
RSSearch.Movenext
Next
RSSearch.Close
Set RSSearch = Nothing
'Close the database connection
SearchConn.Close
End Function
%>
<%
Function Output()
Dim maxPage, previousPage, nextPage, rangeStart, displayRangeStart, rangeEnd, i, x
If language = "francais" Then
Response.Write "Résultats de votre recherche"
Else
Response.Write "
Search results"
End If
maxPage = Int(numMatches) / Int(resultsPerPage)
maxPage = maxPage + 0.5
maxPage = Int(maxPage)
previousPage = Int(currentPage) - 1
nextPage = Int(currentPage) + 1
rangeStart = Int(resultsPerPage) * (Int(currentPage) - 1)
If Int(rangeStart) < 0 Then
rangeStart = 0
End If
displayRangeStart = Int(rangeStart) + 1
rangeEnd = Int(rangeStart) + Int(resultsPerPage)
If Int(numMatches) < Int(resultsPerPage) Then
rangeEnd = Int(numMatches)
End If
If Int(currentPage) >= Int(maxPage) Then
rangeEnd = Int(numMatches)
End If
If language = "francais" Then
Response.Write "
Résumé des résultats de la recherche; " & numMatches & " items trouvés.
Affichage de documents; pages " & displayRangeStart & " - " & rangeEnd & ".
"
Else
Response.Write "Found " & numMatches & " documents matching your query.
Displaying documents " & displayRangeStart & " - " & rangeEnd & ".
"
End If
For i = displayRangeStart To rangeEnd
Response.Write ""
Next
If Int(numMatches) > Int(resultsPerPage) Then
Response.Write " | "
If Int(currentPage) > 1 Then
Response.Write "<< Previous | "
End If
For x = 1 To Int(maxPage)
If x <> currentPage Then
Response.Write "" & x & " | "
Else
Response.Write x & " | "
End If
Next
If Int(currentPage) < Int(maxPage) Then
Response.Write "Next >> "
End If
Response.Write " |
"
End If
End Function
%>
<%
Function TryAgain()
Response.Write ""
Response.Write " "
Response.Write " | "
If language = "francais" Then
Response.Write " Aucun équivalent n'a été trouvé "
Else
Response.Write " Sorry, no matches were found "
End If
Response.Write " | "
Response.Write "
"
Response.Write " "
Response.Write " | "
If language = "francais" Then
Response.Write " S.V.P. modifiez votre recherche et recommencez."
Else
Response.Write " Please modify your search and try again."
End If
Response.Write " | "
Response.Write "
"
Response.Write "
"
Response.Write " "
Response.Write " "
Response.Write " "
Response.Write " | "
If language = "francais" Then
Response.Write " Vous ne trouvez pas ce que vous cherchez? Contactez-nous."
Else
Response.Write " Can't find what you're looking for? Contact us."
End If
Response.Write " | "
Response.Write "
"
Response.Write "
"
End Function
%>
<%
Function DisplaySearchPage()
Response.Write ""
Response.Write " "
Response.Write " | "
If language = "francais" Then
Response.Write " Recherche "
Else
Response.Write " Search "
End If
Response.Write " | "
Response.Write "
"
Response.Write "
"
Response.Write " "
End Function
%>