Just nu i M3-nätverket
Jump to content

Søkefunksjon på eget nettsted


bambus

Recommended Posts

Hei

 

Fant en søkefunksjon på et eller annet nettsted.

Har nå fått den til å fungere, men ønsker nå noen upgrades.

Den funksjonen søker bare i en Table i Access-databasen, nyhetstabellen. Jeg ønsker at man skal få hits på både nyheter, produkter og annen informasjon som ligger i andre tabeller. Så hvordan kan jeg søke i flere tabeller samtidig? eller at det deles opp i en og en tabell, men alt gjøres i en prosess etter at man har klikket på Submit.

 

Fra sok.asp:

 

<form action="sok.asp" method="get">
Friteksts&oslash;k:<br>
<input type="text" name="sok"><input type="submit" value="S&oslash;k">
</form>

<%
sok = trim(request.querystring("sok"))
if len(sok)>0 then
ord = split(sok, " ")
SQL = "SELECT * FROM tblNyheter WHERE "
for i = 0 to Ubound(ord)
sokord = replace(ord(i), "'", "")
sokord = trim(sokord)
if sokord<>"" then
	if left(sokord,1)="-" then
		sokord = right(sokord, len(sokord)-1)
		SQL = SQL & "(NyhetsOverskrift & Tekst & Dato & Forfatter) NOT LIKE '%" & sokord & "%' AND "
	else
		SQL = SQL & "(NyhetsOverskrift & Tekst & Dato & Forfatter) LIKE '%" & sokord & "%' AND "
	end if
end if
next
SQL = left(SQL, len(SQL)-4)
SQL = SQL & " ORDER BY NyhetsID desc"

Set conn = Server.CreateObject("ADODB.Connection")
conn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("db/bs.mdb"))
set rs = conn.Execute(SQL)
Response.Write "<table border='0'><tr><td colspan='3'><h2 class='h2'>" & "Søkeresultater:" & "</h2>" & "</td></tr>" 
Response.Write "<tr><td><strong>" & "Nyhet: " & "</strong></td><td><strong>" & "Dato: " & "</strong></td></tr>" & Vbcrlf
Do Until rs.EOF
Response.Write "<tr><td><a href=vissok.asp?id=" & rs("NyhetsID")
Response.Write ">" & rs("NyhetsOverskrift") & "</td><td>" & rs("Dato") & "</a></td>"
'Response.Write "<td>" & rs("Forfatter") & "</td></tr>" & Vbcrlf
rs.MoveNext
Loop
Response.Write "</table>"
conn.Close
end if
%>

 

Link to comment
Share on other sites

Mm, Access är ju ingen höjdare, så jag vet inte hur mycket av följande som går att genomföra där. Skulle rekommendera åtminstone MySql istället.

 

Men lite tankar iallafall:

Om dina olika tabeller har samma uppbyggnad (samma antal och typ av fält) så kan du använda unioner för att slå samman sökningar i alla dessa till ett enda recordset. Dessutom returnerar du ett extra fält som får fungera som identifierare för vilken tabell just den raden kommer ifrån. Så om du har två tabeller som ser ut så här:

 

tblNyheter

--------

id (int)

NyhetsOverskrift(varchar)

Forfatter(varchar)

 

tblLinks

--------

id (int)

LinkTitle (varchar)

LinkURL (varchar)

 

så slår du samman dem med

[color="#0000ff"]Select[/color] id,NyhetsOverskrift,Forfatter,1 AS TableId FROM tblNyheter
UNION 
[color="#0000ff"]Select[/color] id,LinkTitle,LinkUrl,2 AS TableId FROM tblLinks

 

Sedan kommer koden se någorlunda likadan ut, men skillnaden att du anger en extra switch i din querystring som du hämtar ur det nya fältet TableId (alternativt länkar till olika sidor beroende på TableId)

 

En annan variant är att i en stored procedure utföra flera SELECTS efter varandra och sedan bläddra mellan dessa med NextRecordset i ASP.

 

[inlägget ändrat 2006-11-29 23:48:45 av Anjuna Moon]

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...