It seems that my previous posting didn't go through. Oh well.
I decided to restart working from the sample code. It only has one field to search into. So I replaced that with my database "kjv.mdb", table "bible" and field: "text_data" and here is the code:
Code:
<%
'************************************************************************************
'* ADO Recordset Paging Sample Script
'* by Konstantin Vasserman
'* June 2000
'************************************************************************************
Option Explicit
'************************************************************************************
'* Declaration section
'************************************************************************************
' Mode contstants
Const MODE_DEFAULT = 1
Const MODE_RESULTS = 2
Const DB_NAME = "kjv.mdb" ' Name of our database file
Const SCRIPT_NAME = "bible5.asp" ' Name of this script
Const RECORDS_PER_PAGE = 50 ' Number of records per page
Dim nMode ' Current Mode
'************************************************************************************
'* End of Declaration section
'************************************************************************************
'************************************************************************************
'* Main section
'************************************************************************************
' Find out what mode we are in
nMode = CLng(Request.QueryString("Mode"))
' Depending on our mode we will do different things
Select Case nMode
Case MODE_RESULTS
' This is where all the results will show
ShowResults
Case Else ' This one is for MODE_DEFAULT or invalid modes all the same
' By default display the search form
ShowSearchForm
End Select
'************************************************************************************
'* End of Main section
'************************************************************************************
'************************************************************************************
'* Functions section
'************************************************************************************
' This function will generate our connection string
' it assumes that Access database is in the same folder as this script
Private Function GetConnectionString()
GetConnectionString = "Driver={Microsoft Access Driver (*.mdb)};" & _
"DBQ=" & Server.MapPath(DB_NAME) & ";" & _
"UID=;PWD=;"
End Function
' Shows HTML page header
Public Function OutputPageHeader()
%>
<HTML>
<HEAD><TITLE>ADO Recordset Paging Sample</TITLE></HEAD>
<BODY>
<H2>ADO Recordset Paging Sample</H2>
<H3><A HREF="<%=SCRIPT_NAME%>">Back Home</A></H3>
<%
End Function
' Shows HTML page footer
Public Function OutputPageFooter()
%>
</BODY>
</HTML>
<%
End Function
' This function will display the search form
Private Function ShowSearchForm()
OutputPageHeader
%>
<!--
This form will direct user to itself with MODE_RESULTS mode
-->
<FORM ACTION="<%=SCRIPT_NAME%>" METHOD="GET">
Item Name: <INPUT TYPE="text" NAME="Keyword" VALUE="Item"> <INPUT TYPE="submit" VALUE=" Search ">
<INPUT TYPE="hidden" NAME="Mode" VALUE="<%=MODE_RESULTS%>">
</FORM>
<%
OutputPageFooter
End Function
' This function will display the results of the search
Private Function ShowResults()
Dim strConn ' Database connection string
Dim SQL ' String that will have our SQL statments
Dim RS ' Recordset object
Dim Keyword ' Keyword for search
Dim nRecCount ' Number of records found
Dim nPageCount ' Number of pages of records we have
Dim nPage ' Current page number
' Let's see what page are we looking at right now
nPage = CLng(Request.QueryString("Page"))
' Let's see what user wants to search for today :)
Keyword = Trim(Request.QueryString("Keyword"))
' define our SQL statment
' we will be looking for all the records in tblItem table
' where ItemName contains our Keyword
' do not forget to fix tick marks (single quotes) in our Keyword
SQL = "SELECT * FROM bible WHERE text_data LIKE '%" & Replace(Keyword, "'", "''") & "%'"
' Create our connection string
strConn = GetConnectionString()
' Time to create and open recordset
Set RS = Server.CreateObject("ADODB.Recordset")
RS.CursorLocation = 3 ' adUseClient
RS.Open SQL, strConn ' adOpenKeyset CursorType
' Start outputing HTML
OutputPageHeader
' Did we find anything?
If Not RS.Eof Then
' Let's deal with our findings
' Get records count
nRecCount = RS.RecordCount
' Tell recordset to split records in the pages of our size
RS.PageSize = RECORDS_PER_PAGE
' How many pages we've got
nPageCount = RS.PageCount
' Make sure that the Page parameter passed to us is within the range
If nPage < 1 Or nPage > nPageCount Then
' Ops - bad page number
' let's fix it
nPage = 1
End If
' Time to tell user what we've got so far
Response.Write nRecCount & " records found matching """ & Keyword & """.<br>"
Response.Write nPageCount & " pages of results.<br>"
Response.Write "Current page is " & nPage & ".<p>"
' Give user some navigation
' first page
' we link to this page with Page parameter = 1
Response.Write "<A HREF=""" & SCRIPT_NAME & _
"?Keyword=" & Keyword & _
"&Mode=" & MODE_RESULTS & _
"&Page=" & 1 & _
""">First Page</A>"
Response.Write " "
' Previous Page
' we link to this page with Page parameter = Current Page - 1
Response.Write "<A HREF=""" & SCRIPT_NAME & _
"?Keyword=" & Keyword & _
"&Mode=" & MODE_RESULTS & _
"&Page=" & nPage - 1 & _
""">Prev. Page</A>"
Response.Write " "
' Next Page
' we link to this page with Page parameter Current Page + 1
Response.Write "<A HREF=""" & SCRIPT_NAME & _
"?Keyword=" & Keyword & _
"&Mode=" & MODE_RESULTS & _
"&Page=" & nPage + 1 & _
""">Next Page</A>"
Response.Write " "
' Last Page
' we link to this page with Page parameter = nPageCount
Response.Write "<A HREF=""" & SCRIPT_NAME & _
"?Keyword=" & Keyword & _
"&Mode=" & MODE_RESULTS & _
"&Page=" & nPageCount & _
""">Last Page</A>"
' Start Results
Response.Write "<p><b>Results:</b><br>" & String(20,"-")
' Position recordset to the page we want to see
RS.AbsolutePage = nPage
' Let's output our records
' Loop through records until it's a next page or End of Records
Do While Not (RS.Eof OR RS.AbsolutePage <> nPage)
' All we do here is just show the records
Response.Write "<br>" & RS("text_data")
' Move on to the next record
RS.MoveNext
Loop
Else
' We did not find anything
Response.Write "Nothing found. Try again.<p><A HREF=""" & SCRIPT_NAME & """>Back</A>"
End If
' Be nice - close the recordset
RS.Close
' Finish this page
OutputPageFooter
End Function
'************************************************************************************
'* End of Functions section
'************************************************************************************
%>
I need to change this into a multiple field search, where I can enable/disable by using checkboxes. I have the oringinal codes for checkbox functions used in another page format. I just need to adjust to this page format. I will post more later.