Avatar billede fromse Nybegynder
27. maj 2004 - 17:30 Der er 8 kommentarer og
2 løsninger

Søgefunktion

Hej...

Jeg har brug for et søgemodul, hvor søge resultaterne bliver stillet op under hindanden. Med sidens navn, som overskrift. (se URL nedenfor)

Jeg har ikks så meget forstand på det, men jeg går udfra at resultaterne bliver trukket ud af en database.

URL: http://fromse.dk/exp/sog.gif
Avatar billede tobby Nybegynder
28. maj 2004 - 00:12 #1
Du skal bruge en form med en søgefelt:

<form action="dosearch.asp" method=post>
<input type=text name="streng">
<input type=submit value="Søg">
</form>

Og en side der udfører søgningen:

<%
streng = request.form("streng")

Query = "SELECT * FROM Dokumenter WHERE Titel LIKE '%" & streng & "%' OR Tekst LIKE '%" & streng & "%'"
Set RS = Server.CreateObject("ADODB.RecordSet")
RS.Open Query, Connection, 0

if RS.EOF then
  response.write("ingen resultater")
else
  do until RS.EOF
    response.write("<b>" & RS("Titel") & "</b><br>") & replace(RS("Tekst"), streng, "<b>" & streng & "</b>") & "br"
  RS.MoveNext
  Loop
end if

RS.Close
Set RS = Nothing
%>
Avatar billede fromse Nybegynder
28. maj 2004 - 08:31 #2
Jeg kan ikke få det til at virke...

Men det er også lige meget, for jeg har selv lavet et søgemodul...
Avatar billede thesurfer Nybegynder
28. maj 2004 - 16:39 #3
fromse> For at undgå snyd, skal svaret offentliggøres, jvf Ekspertens regel 2.8:

Ekspertens regel §2.8:
"Hvis der udloddes andre præmier end point såsom penge, så skal spørgsmålet placeres i kategorierne Opgaver eller Job/opgaver. Svaret på - eller løsningen til - et sådant spørgsmål behøver ikke at blive offentliggjort på Eksperten - i modsætning til spørgsmål, der involverer point. De skal offentliggøres på sitet. Kategorierne Opgaver og Job/opgaver kan stadig indeholde spørgsmål med point som præmier. I så fald gælder de almindelige regler såsom offentliggørelse af svar."

Ekspertens regler: http://www.eksperten.dk/regler.phtml
Avatar billede tobby Nybegynder
28. maj 2004 - 17:58 #4
Fromse> Hvis du selv kan lave det, hvorfor i al verden spørger du så om det (og spilder min tid)?
Avatar billede fromse Nybegynder
28. maj 2004 - 18:34 #5
Jeg har fået EN til at lave... Da jeg havde brug for det hurtigt...

og nåede ikke at "fjerne" spørgsmålet...
Avatar billede thesurfer Nybegynder
28. maj 2004 - 18:53 #6
hmm.. lagde lige mærke til en lille "fejl" i tobbys indlæg.. der står "br" i stedet for "<br>".. men det har ikke nogen betydning, funktionsmæssigt..

fromse> Hvis du ser det fra tobbys side, kan du nok se at han/hun kan føle sig r*v-rendt.. tobby skriver en mulig løsning, hvorefter du lægger svaret "Men det er også lige meget, for jeg har selv lavet et søgemodul..."

Det ligner meget snyd.. og derfor bedes du skrive den kode, som er løsningen, da du ellers kan blive anmeldt for (ulovligt) at tage pointsne igen..

- for at lukke et spm, skal man først markere i navn i boksen til venstre, og derefter klikke på Accepter-knappen.. et spm er ikke lukket, før det er sket.
Avatar billede fromse Nybegynder
28. maj 2004 - 18:56 #7
Kan godt forstå det... Her er koden:


If Len(strKeyword) = 0 Then
    ' Hvis der ikke er skrevet i feltet
    Response.Clear
    Response.Redirect("searchit.asp")
Else
    ' Hvis der er skrevet i feltet
    strKeyword = Replace(strKeyword,"'","''")
End If

' Opbygger en dynamisk SQL streng
strSQL = "SELECT ID, Navn, Beskrivelse FROM Kunder WHERE"
strSQL = strSQL & " (Navn LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Beskrivelse LIKE '%" & strKeyword & "%')"

' Skaber DSNLess forbindelse til DBen
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("search.mdb")
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open strDSN

' Skaber et recordset udfra SQL strengen
Set rs = myConn.Execute(strSQL)
If Not (rs.BOF Or rs.EOF) Then
    ' Hvis der er fundet poster på søgningen
    Response.Write "<h1>Søgeresultat</h1><a>Søgningen på <i><b>'søgeord'</b></i> gav følgende resultater:</a>"
    Response.Write "<hr size=1 width=400px align=left color=#000000><br>"
    Do While Not rs.EOF
        Response.Write "<b><a href='search.asp?id=("Navn")'>" & rs("Navn") & "</b><br>" & rs("Beskrivelse") & "</a><br><br>"
        rs.MoveNext
    Loop
    Response.Write "<a href='searchit.asp'>Ny søgning...</a>"

Else
    ' Hvis der ikke er fundet poster på søgningen
    Response.Write "<h1>Søgeresultat</h1><a>Søgningen på <i><b>'søgeord'</b></i> gav ingen resultater...</a>"
    Response.Write "<hr size=1 width=400px align=left color=#000000><br>"
    Response.Write "<a href='searchit.asp'>Ny søgning...</a>"
End If

' Rydder op efter os
myConn.Close
Set myConn = Nothing
%>

</body></html>
Avatar billede thesurfer Nybegynder
28. maj 2004 - 20:02 #8
hmm.. lige et par ting..

- Jeg kan ikke lige se, hvorfor der står "<a>" og "</a>" her:
<a>Søgningen på <i><b>'søgeord'</b></i> gav følgende resultater:</a>

- får du ikke fejl, ved "Navn", i denne linie?:
Response.Write "<b><a href='search.asp?id=("Navn")'>" & rs("Navn") & "</b><br>" & rs("Beskrivelse") & "</a><br><br>"
I samme linie ville jeg også flytte "<b>" til efter "<a ...>" og før "& rs(.."
Avatar billede thesurfer Nybegynder
28. maj 2004 - 20:04 #9
nu kan jeg ikke se starten af asp filen, men det ville også være en god ide, at bruge Option Explicit, og derefter deklare alle dine variabler (med dim variabelnavn, eksempel: dim strSQL).. hvis du så laver stavefejl, vil den fortælle dig det med det samme..
Avatar billede thesurfer Nybegynder
28. maj 2004 - 20:06 #10
deklare = definere
Det var en blanding af dansk og engelsk :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester