Search on Bhufin |
<%
' Constants from adovbs.inc, I wunt piss with these! :P
Const adOpenStatic = 3
Const adLockReadOnly = 1
Const adCmdText = &H0001
' constants, No of results per page
Const PAGE_SIZE = 10 ' The size of our pages.
Dim strURL ' The URL of this page so the form will work
' no matter what this file is named.
Dim cnnSearch ' ADO connection
Dim rstSearch ' ADO recordset
Dim strDBPath ' path to our Access database (/database.mdb) file
Dim strSQL ' The SQL Query we build on the fly
Dim strSearch ' The text being looked for
Dim iPageCurrent ' The page we're currently on
Dim iPageCount ' Number of pages of records
Dim iRecordCount ' Count of the records returned
Dim I ' Standard looping variable
' Retreive the URL of this page from Server Variables
strURL = Request.ServerVariables("URL")
' Retreive the term being searched for. I'm doing it on
' the QS since that allows people to bookmark results.
' You could just as easily have used the form collection.
strSearch = Request.QueryString("search")
' Retrieve page to show or default to the first
If Request.QueryString("page") = "" Then
iPageCurrent = 1
Else
iPageCurrent = CInt(Request.QueryString("page"))
End If
' Since I'm doing this all in one page I need to see if anyone
' has searched for something. If they have we hit the DB.
' If not i just show the search form and quit.
%>
<%
If strSearch <> "" Then
' MapPath of virtual database file path to a physical path.
' If you want you could hard code a physical path here.
strDBPath = Server.MapPath("database.mdb")
' Create an ADO Connection to connect to the sample database.
' We're using OLE DB but you could just as easily use ODBC or a DSN.
Set cnnSearch = Server.CreateObject("ADODB.Connection")
' This line is for the Access sample database:
cnnSearch.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strDBPath & ";"
' We're actually using SQL Server so we use this line instead:
' cnnSearch.Open Application("SQLConnString")
' Build our query based on the input.
' If u have a clue what your doing u could change the way the results are ordered.
strSQL = "SELECT name, url, dis " _
& "FROM search " _
& "WHERE name LIKE '%" & Replace(strSearch, "'", "''") & "%' " _
& "OR keywords LIKE '%" & Replace(strSearch, "'", "''") & "%' " _
& "OR dis LIKE '%" & Replace(strSearch, "'", "''") & "%' " _
& "ORDER BY id;"
' Execute our query using the connection object. It automatically
' creates and returns a recordset which we store in our variable.
Set rstSearch = Server.CreateObject("ADODB.Recordset")
rstSearch.PageSize = PAGE_SIZE
rstSearch.CacheSize = PAGE_SIZE
' Open our recordset
rstSearch.Open strSQL, cnnSearch, adOpenStatic, adLockReadOnly, adCmdText
' Get a count of the number of records and pages
' for use in building the header and footer text.
iRecordCount = rstSearch.RecordCount
iPageCount = rstSearch.PageCount
If iRecordCount = 0 Then
' Display no records error.
%>
No matches found. Please search again.
<% Else ' Move to the page we need to show. rstSearch.AbsolutePage = iPageCurrent %>|
<%= iRecordCount %> Matches Found. |
Displaying Page <%= iPageCurrent %>Of <%= iPageCount %> |
| "><%= rstSearch.Fields("name").Value %> | <%= rstSearch.Fields("dis").Value %> |
<% If iPageCurrent > 1 Then %> <<Prev <% End If For I = 1 To iPageCount If I = iPageCurrent Then %> <%= I %> <% Else %> <%= I %> <% End If Next 'I If iPageCurrent < iPageCount Then %> Next>> <% End If %>
<% End If ' Close our recordset and connection and dispose of the objects rstSearch.Close Set rstSearch = Nothing cnnSearch.Close Set cnnSearch = Nothing End If %>

