Søgemaskine, der foretage kombinerede søgninger i Access-database
Jeg har nu udarbejdet en søgemaskine i asp til en Access database. Søgefunktionaliteten i søgemaskine muliggør fritekstsøgning, samt søgninger på de forskellige felter i basen - et felt af gangen. Det er dog ikke muligt at kombinere søgningerne, f.eks. søge på Søren under FORNAVN-feltet og Hansen under EFTERNAVN-feltet samtidigt. Hvordan får jeg udvidet min søgemaskine til at kunne dette?På nuværende tidspunkt er søgemaskine opbygget med en htm.fil hvori søgebilledet ses. Til hver søgefelt er der tilknyttet en asp-fil der så kan udføre søgningen i det enkelte felt. Herunder ses et eksempel på en af disse asp-filer:
<% Response.Buffer = true %>
<html>
<head>
<title>Resultat af søgning</title>
</head>
<body BGCOLOR=\"#003050\" TEXT=\"#E6E8FA\" VLINK=\"#FCCF03\" LINK=\"#FCCF03\" ALINK=\"#06438A\" leftmargin=\"25\">
<% Response.Buffer = true %>
<p align=\"left\">
<font size=6 color=\"#FCCF03\"><b>Resultat af søgning</b>
</font>
<font size=5 color=\"#FCCF03\">
<font size=3 color=\"#FCCF03\"><p align=\"right\"><a href=\"search.asp\">Ny søgning</a><br></p>
<%
\' strKeyword = Trim(Request.Form(\"Keyword\"))
strKeyword = Request.querystring(\"Keyword\")
If Len(strKeyword) = 0 Then
Response.Clear
Response.Redirect(\"search.htm\")
Else
strKeyword = Replace(strKeyword,\"\'\",\"\'\'\")
End If
intPage = Request(\"page\")
If isNumeric(intPage) = False Or intPage < 1 Then
intPage = 1
End If
Set rs = Server.CreateObject(\"ADODB.RecordSet\")
strSQL = \"SELECT * FROM Tabel WHERE\"
strSQL = strSQL & \" (Efternavn LIKE \'%\" & strKeyword & \"%\')\"
strDSN = \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\"&Server.MapPath(\"test.mdb\")
rs.Open strSQL, strDSN, 1
If Not (rs.BOF Or rs.EOF) Then
rs.PageSize = 5
rs.AbsolutePage = intPage
intRecCount = rs.PageSize
intPageCount = rs.PageCount
Response.Write \"<p><b>Side \" & intPage & \" af \" & intPageCount & \"</b></p>\"
Do While Not rs.EOF And intRecCount > 0
Response.Write \"<tr><th><b><p></p>Efternavn: </b></th></tr>\"
Response.Write \"<font color=#FFFFFF><b>\" & rs(\"Efternavn\") & \"</b></font><br>\"
Response.Write \"<tr><th><b>Fornavne: </b></th></tr>\"
Response.Write \"<font color=#FFFFFF><b>\" & rs(\"Fornavne\") & \"</font><br>\"
Response.Write \"<tr><th><b>Fødselsdato: </b></th></tr>\"
Response.Write \"<font color=#FFFFFF><b>\" & rs(\"Fødselsdato\") & \"</font><br>\"
Response.Write \"<tr><th><b>Fødested: </b></th></tr>\"
Response.Write \"<font color=#FFFFFF><b>\" & rs(\"Fødested\") & \"</font><br>\"
Response.Write \"<tr><th><b>Gade/vej: </b></th></tr>\"
Response.Write \"<font color=#FFFFFF><b>\" & rs(\"Gadevej\") & \"</font><br>\"
Response.Write \"<tr><th><b>Gade-/vejnummer: </b></th></tr>\"
Response.Write \"<font color=#FFFFFF><b>\" & rs(\"Gadevejnummer\") & \"</font></b><br>\"
intRecCount = intRecCount - 1
rs.MoveNext
Loop
Else
Response.Write \"Der er ikke fundet nogle personer, der matcher din søgning\"
End If
rs.Close
Set rs = Nothing
Response.Write \"<p>Gå til side \"
For intNum = 1 To intPageCount
Response.Write \"<a href=search.asp?Keyword=\" & strKeyword & \"&page=\" & intNum & \">\" & intNum & \"</a> \"
Next
Response.Write \"<p>\"
If Clng(intPage) > 1 Then
Response.Write \"<a href=search.asp?Keyword=\" & strKeyword & \"&page=\" & intPage - 1 & \"><<</a>\"
Else
Response.Write \"<<\"
End If
Response.Write \" \"
If Clng(intPage) < Clng(intPageCount) Then
Response.Write \"<a href=search.asp?Keyword=\" & strKeyword & \"&page=\" & intPage + 1 & \">>></a>\"
Else
Response.Write \">>\"
End If
%>
</body></html>