webForumDet fria alternativet

Söka i databas

ASP

24 svar · 418 visningar · startad av AboO

Medlem sedan juni 2002191 inlägg
Frågan#1

Jag skulle vilja ha en funktion som söker i en Access databas, i ett speciellt tabellfält.

Men jag har inte en aning om hur man gör det :l

har kollat efter något liknande skript, men har inte hittat nåt.

Medlem sedan nov. 20014 054 inlägg
#2
"SELECT * from tabellnamn WHERE column LIKE '%$sok_ord'"

Sen om du kan i övrigt koda smått i asp så är det inga problems!!!

Men annars:

Dim Connect, DSNtemp
Set Connect = Server.CreateObject("ADODB.Connection")
DSNtemp = "Provider=Microsoft.JET.OLEDB.4.0;Data Source=/sökväg/till/databasen från rooten/"
Connect.Open(DSNtemp)

Dim sok_ord, Rs, SQL
sok_ord = Request.Form("sok_ord")

Set Rs = Server.CreateObject("ADODB.RecordSet")
SQL = "SELECT * from tabellnamn WHERE column LIKE '%" & sok_ord & "'"
Rs.Open SQL, Connect

If Rs.Eof Then
Response.Write "<strong>" & sok_ord & "</strong> kunde inte hittas!"
Else
Do While Rs.Eof

Response.Write("" & Rs("column") & "<br />")

Rs.MoveNext
Loop

End If

Rs.Close
Set Rs = Nothing

Connect.Close
Set Connect = Nothing

Sen kan man ju givetvis bygga ut denna och göra den mycket mera avancerad, detta var bara ett hafsift exempel. :e

Medlem sedan juni 2002191 inlägg
#3

Sen gör man bara ett vanlig formulärfält som heter sok_ord som har den där koden som action?

Medlem sedan feb. 200112 078 inlägg
#4

Fredde skrev:

SQL = "SELECT * from tabellnamn WHERE column LIKE '%" & sok_ord & "'"

Nja, det där innebär att sökordet slutar på det som användaren söker på. Borde vara tvärt som eller kanske på båda sidor.

Enkel

SQL = "SELECT * from tabellnamn WHERE column LIKE '" & sok_ord & "%'"

Dubbel

SQL = "SELECT * from tabellnamn WHERE column LIKE '%" & sok_ord & "%'"
Medlem sedan feb. 200112 078 inlägg
#5

AboO skrev:

Sen gör man bara ett vanlig formulärfält som heter sok_ord som har den där koden som action?

Typ, så ja.

Medlem sedan juni 2002191 inlägg
#6
<form method="POST" action="search.asp" name="sok_ord">
  <p><input type="text" name="sok_ord" size="20"><input type="submit" value="Sök" name="submit"><input type="reset" value="Sudda" name="reset"></p>
</form>

så gjorde jag.
då när jag testar att söka, så blir det bara en blank sida.
och search.asp innehåller den koden som Fredde skrev först, fast jag ändrade till dubbel.

Medlem sedan feb. 200112 078 inlägg
#7

Fredde har ett smärre fel i sin kod, som gjorde att ingenting visades.

Dim Connect, DSNtemp
Set Connect = Server.CreateObject("ADODB.Connection")
DSNtemp = "Provider=Microsoft.JET.OLEDB.4.0;Data Source=/sökväg/till/databasen från rooten/"
Connect.Open(DSNtemp)

Dim sok_ord, Rs, SQL
sok_ord = Request.Form("sok_ord")

Set Rs = Server.CreateObject("ADODB.RecordSet")
SQL = "SELECT * from tabellnamn WHERE column LIKE '%" & sok_ord & "'"
Rs.Open SQL, Connect

If Rs.Eof Then
Response.Write "<strong>" & sok_ord & "</strong> kunde inte hittas!"
Else
[b]Do until Rs.Eof[/b]

Response.Write("" & Rs("column") & "<br />")

Rs.MoveNext
Loop

End If

Rs.Close
Set Rs = Nothing

Connect.Close
Set Connect = Nothing
Medlem sedan juni 2002191 inlägg
#8

Ah, nu funkar det.

Om du kollar på: http://user.domaindlx.com/aboox/db/index.htm

Sen testar att söka.
Jag skulle vilja att sökresultaten länkas till inläggen, så man kan klicka på namnet och läsa vad personen skrev. Ska man länka till ID:et då eller hur ska man göra?

Medlem sedan feb. 200112 078 inlägg
#9
Response.Write "<a href=""visningsSida.asp?id=" & Rs("ID") & """><%=rs("column")%></a>"

RED. Det ovanstående är givetvis fel. :o :r

Rätt lösning ser ut såhär:

Response.Write "<a href=""visningsSida.asp?id=" & Rs("ID") & """>" & rs("column") & "</a>"
Medlem sedan juni 2002191 inlägg
#10

Expected end of statement

/aboox/db/search.asp, line 20

Response.Write "<a href=""list.asp?id=" & Rs("ID") & """><%=rs("namn")

Nu får jag det inte att funka :|

Medlem sedan feb. 200112 078 inlägg
#11

RED. Det är ju jag som är puckad. Ursäkta min klumpighet. Såhär skall det vara:

Response.Write "<a href=""list.asp?id=" & Rs("ID") & """>" & rs("namn") & "</a>"
Medlem sedan juni 2002191 inlägg
#12

Det funkade bättre :)

fast nu blir det bara en blank sida istället.. igen

Medlem sedan feb. 200112 078 inlägg
#13

Då har du ändrat något i din kod, för när jag försökte så fick jag inte träffar på någonting, oavsett sökord.

Medlem sedan juni 2002191 inlägg
#14

testa med Magnus.
för det söker på namn i databasen, och Magnus är det enda namnet än så länge. :)

Medlem sedan feb. 200112 078 inlägg
#15

Testade med 'g' och det borde garanterat ge en träff, vilket det inte gör.

Kasta upp hela koden igen. :)

Medlem sedan juni 2002191 inlägg
#16
<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath ("idelada.mdb") 

Dim sok_ord, Rs, SQL
sok_ord = Request.Form("sok_ord")

Set Rs = Server.CreateObject("ADODB.RecordSet")
SQL = "SELECT * from results WHERE namn LIKE '%" & sok_ord & "%'"

Rs.Open SQL, Connect

If Rs.Eof Then
Response.Write "<strong>" & sok_ord & "</strong> kunde inte hittas!"
Else
Do While Rs.Eof

Response.Write("" & Rs("Namn") & "<br />")
Response.Write "<a href=""list.asp?id=" & Rs("ID") & """>" & rs("namn") & "</a>"

Rs.MoveNext
Loop

End If

Rs.Close
Set Rs = Nothing

Connect.Close
Set Connect = Nothing
%>

There you go.
Nu såg jag att det var while istället för until.
hur det nu kunde ändra på sig igen :)

Medlem sedan juni 2002191 inlägg
#17

kan föresten lägga till att list.asp är sidan där inläggen hämtas från databasen.

Medlem sedan feb. 200112 078 inlägg
#18

Du bytte ju ut det jag rättade till ett par inlägg ovan. :D

Detta..

Do While Rs.Eof

..skall vara detta:

Do Until Rs.Eof
Medlem sedan juni 2002191 inlägg
#19

Jo, jag märkte det :)

Tack så jättemycket.
nu tror jag allt är lugnt.

Medlem sedan nov. 20014 054 inlägg
#20

ett misstag sker så lätt!!! :e

Vad fint att det funkar nu dig!!

274 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)