Ja det är lite mycket kod, men kan inte asp så tar hjälp av proffsen.
Jag skulle behöva hjälp med att implementera min sökkod i Paging koden, så att allt visas rätt.
Har denna sökkod:
<%
Response.Cachecontrol="Public"
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "driver={Microsoft Access Driver (*.mdb)};dbq=D:/search.mdb"
dim i,j,mQuery,mQueryArr,mAndArr,mNotArr,mOrArr,mSQL,mWhere
'grunddelarna i frågan
mSQL="SELECT * FROM search1 WHERE "
mWhere="(country LIKE '%%') OR (province LIKE '%%') OR (city LIKE '%%')"
'sökfältets värde
mQuery=request.form("fsearch")
'loopa igenom allt och ersätt mellanslag inom citattecken med chr(1).
'Denna bit går att göra med reguljära uttryck också
for i=1 to len(mQuery)
mAsc=asc(mid(mQuery,i,1))
if mAsc=34 then
mCount=mCount+1
blnInQ=not blnInQ
else
if blnInQ and mAsc=32 then
mQuery=left(mQuery,i-1) & chr(1) & mid(mQuery,i+1)
end if
end if
next
'om antalet citattecken är ojämnt ignoreras de helt
if mCount mod 2 <> 0 then
mQuery=replace(mQuery,chr(1)," ")
end if
'ta bort citattecknen
mQuery=replace(mQuery,chr(34),"")
'ersätt mellanslag med chr(0) och mellanslag
mQuery=chr(0) & replace(mQuery," "," " & chr(0))
'splitta upp i en array
mQueryArr=split(mQuery," ")
'skapa arrayer för AND, AND NOT och OR.
'chr(0) gör det nu möjligt att matcha endast början på strängarna
mAndArr=filter(mQueryArr,chr(0) & "+",true)
mQueryArr=filter(mQueryArr,chr(0) & "+",false)
mNotArr=filter(mQueryArr,chr(0) & "-",true)
mQueryArr=filter(mQueryArr,chr(0) & "-",false)
'återskapa strängarna (ersätt chr(1) med mellanslag) och
'skapa WHERE-satser i arrayerna
for i=0 to ubound(mAndArr)
mAndArr(i)=replace(mAndArr(i),chr(1)," ")
mAndArr(i)=replace(mWhere,"%%","%" & mid(mAndArr(i),3) & "%")
next
for i=0 to ubound(mNotArr)
mNotArr(i)=replace(mNotArr(i),chr(1)," ")
mNotArr(i)=replace(mWhere,"%%","%" & mid(mNotArr(i),3) & "%")
next
for i=0 to ubound(mQueryArr)
mQueryArr(i)=replace(mQueryArr(i),chr(1)," ")
mQueryArr(i)=replace(mWhere,"%%","%" & mid(mQueryArr(i),2) & "%")
next
'tejpa ihop en färdig fråga
mQuery=join(mQueryArr," OR ")
if mQuery<>"" then
mQuery="(" & mQuery & ")"
if ubound(mAndArr) > -1 then mQuery=mQuery & " AND "
end if
mQuery=mQuery & join(mAndArr," AND ")
if mQuery<>"" and ubound(mNotArr) > -1 then mQuery=mQuery & " AND NOT "
mQuery=mSQL & mQuery & join(mNotArr," AND NOT ")
set rs=Connection.execute (mQuery)
%>
<%
If rs.EOF Then
Response.write("We searched and didn't find what you wanted...")
Else
%>
<%
do until rs.eof
if bgcolor = "#FFFFFF" then bgcolor = "#FFCC66" Else bgcolor = "#FFFFFF" End if
%>
<tr>
<td width="243" height="1" bgcolor="<%=bgcolor%>"><font face="Verdana" size="1" color="#000000"><%=rs("ID")%> <a href="detail.asp?id=<%=rs("ID")%>"><% Response.Write "" & Split(rs("country"), ";")(0)%>, <%=rs("province")%>, <%=rs("city")%> </a></font></td>
<td width="145" height="1" bgcolor="<%=bgcolor%>"><font face="Verdana" size="1" color="#000000"><%=rs("bedf")%></font></td>
<td width="40" height="1" bgcolor="<%=bgcolor%>"><font face="Verdana" size="1" color="#000000"><%=rs("xbed")%></font></td>
<td width="192" height="1" bgcolor="<%=bgcolor%>"><font face="Verdana" size="1" color="#000000">High: <%=rs("high")%><br>Low: <%=rs("low")%></font></td>
</tr>
<%
rs.MoveNext
Loop
End If
rs.close
set rs=nothing
Connection.close
set Connection=nothing
%>
/////////////////////////////////////////////////////////////////////////////
Pagingkoden:
<% @ LANGUAGE="VBScript" %>
<%
' Good Things To Do ™
Option Explicit
Response.Buffer = True
' Constants we'll use for opening the recordset.
Const adOpenForwardOnly = 0
Const adLockReadOnly = 1
Const adUseClient = 3
Const adCmdText = 1
' connection object, recordset, connection string, SQL string. I'll leave you to guess which...
Dim conn, rs, connString, qString
' Open the database connection
connString = "driver={Microsoft Access Driver (*.mdb)};dbq=D:/search.mdb"
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open connString
%>
<HTML>
<HEAD> <TITLE>Paging</TITLE> </HEAD>
<BODY>
<%
' Variables for the page number we want to show, and the total number of pages
Dim mypage, numpages
' Variables for the total number of records, and the number of records we should show on one page
Dim numrecs, pagesize
' Get the page number we need to display from Form or QueryString
mypage = CInt( Request("page") )
' If we aren't given one display page 1
If mypage=0 Then mypage=1
' Get the requested number of records per page
pagesize = 10
' The code we need to set up a recordset object for paging
Set rs = Server.CreateObject("ADODB.RecordSet")
rs.PageSize = pagesize
rs.CacheSize = pagesize
rs.CursorLocation = adUseClient
' Open the recordset
qString = "SELECT * FROM search1"
rs.Open qString, conn, adOpenForwardOnly, adLockReadOnly, adCmdText
' Get the number of pages and records
numpages = rs.PageCount
numrecs = rs.RecordCount
' Just in case we have a bad request
If mypage > numpages Then mypage = numpages
If mypage < 1 Then mypage = 1
' This line sets the current page
rs.AbsolutePage = mypage
' Output the total number of records in the recordset
Response.Write("<P> <B>" & numrecs & " records found.</B>" )
' Write the current page number and number of pages (eg "Page 4 of 7")
Response.Write("<BR> Page " & mypage & " of " & numpages & "</P>")
' Center align the display of records and links
Response.Write("<CENTER>")
' Loop through the records for this page writing each on a new line
Dim i
For i=1 To pagesize
' Make sure we don't go past the last record
If NOT rs.EOF Then
' Write a couple of fields from each record separated with a |
Response.Write(rs("country") & " | " & rs("city") & " <BR>")
' Point to the next record
rs.MoveNext
End If
Next
Response.Write("<P>")
' Loop through the number of pages writing a link for each
Dim x, lb, ub
For x=1 To numpages
' lb is the lowest record number on that page, ub is the highest
lb = (x-1) * pagesize + 1
ub = x * pagesize
' Makes sure the final link doesn't extend past to the # of records
If ub > numrecs Then ub = numrecs
' Don't display the current page as a hyperlink
If x <> mypage Then
' Example output: <A HREF=paging.asp?page=4;recs=25>75-100</A>
Response.Write("<A HREF=paging.asp?page=" & x & "&recs=" & pagesize & ">" & lb & "-" & ub & "</A>")
Else
' The active page
Response.Write(lb & "-" & ub)
End If
' Writes | as a separator if we're not at the last link
If x <> numpages Then Response.Write(" | ")
Next
Response.Write("</CENTER>")
' Clean-up
rs.Close
conn.Close
Set rs = Nothing
Set conn = Nothing
%>