Avatar billede apo Praktikant
04. marts 2005 - 18:55 Der er 8 kommentarer og
1 løsning

Avanceret søgefunktion

Hej.

Jeg anvender følgende SQL-streng til at foretage en tekstsøgning:

<%
'(...)
strSQL = "SELECT * FROM artikler WHERE "
strSQL = strSQL & " (Titel LIKE '%" & strTekst & "%')"
strSQL = strSQL & " OR (Blikfang LIKE '%" & strTekst & "%')"
strSQL = strSQL & " OR (Indhold LIKE '%" & strTekst & "%')"
'(...)
%>

Hvordan laves SQL'en, så brugerne får mulighed for at vælge mellem en søgning på et enkelt ord eller flere ord?

Apo
Avatar billede peter_hansen Nybegynder
04. marts 2005 - 19:22 #1
Ved ikke om der findes en bedre metode.
Men på denne måde får du ihvertilfælde løbet dem igennem, uanset om der er en eller flere ord.

strTekst = split(strTekst," ")

for a = LBound(strTekst) to Ubound(strTekst)
  strSQL = "SELECT * FROM artikler WHERE "
  strSQL = strSQL & " (Titel LIKE '%" & strTekst(a) & "%')"
  strSQL = strSQL & " OR (Blikfang LIKE '%" & strTekst(a) & "%')"
  strSQL = strSQL & " OR (Indhold LIKE '%" & strTekst(a) & "%')"
next
Avatar billede apo Praktikant
04. marts 2005 - 19:40 #2
Hmm... Jeg fik nok ikke forklaret mig ordenligt :-)

Jeg vil gerne give mine brugere mulighed for at kunne søge ud fra forskellige kriterier:

- Almindelig søgning (enkelt ord)
- Søgning på sætning (flere ord)

Brugeren skal kunne vælge mellem kriterierne via radiobuttons...

Måske giver det et tydeligere billede af hvor jeg vil hen?

Apo
Avatar billede apo Praktikant
04. marts 2005 - 20:05 #3
Hvis det er et svært spørgsmål vil jeg gerne give flere points :-)

Apo
Avatar billede canedo Nybegynder
04. marts 2005 - 22:12 #4
Du kan måske oprette en IF sætning udenom dit script, - som finder ud af hvor brugeren har sat sin radioknap.

Pseudo kode:

If radioknap = "1" then
  scriptet til almindelig søgning
Else
  sctiptet til sætning
End If
Avatar billede apo Praktikant
04. marts 2005 - 22:15 #5
canedo > Jeps, den havde jeg regnet ud ;-)

Mit problem er at jeg ikke ved hvordan jeg skal lave selve koden til at søge på en sætning (så der kun fremkommer resultater der matcher den præcise sætning).

Nogle forslag til hvordan jeg gør det?

Apo
Avatar billede canedo Nybegynder
04. marts 2005 - 22:58 #6
jeg er absolut ikke asp-haj, men har anvendt dette til en søgefunktion engang:

'ny START
sql = "SELECT * FROM [brugere] WHERE "
blnNotFirst = False

city = session("sted")
If Len(city) > 0 Then
    AddSql Sql, "city='" & city & "'", blnNotFirst
End If

soeger = session("soeger")
If Len(soeger) > 0 Then
    AddSql Sql, "soeger=" & soeger & "", blnNotFirst
End If

sql = sql & " ORDER BY [brugernavn] asc;"

'/// Denne her funktion tilføjer automatisk til Sql
Sub AddSql(rSql, aSqlToBeAdded, rblnNotFirst)
    If blnNotFirst Then
        rSql = rSql & " AND"
    Else
        rblnNotFirst = True
    End If
    rSql = rSql & " " & aSqlToBeAdded
End Sub


---

scriptet gør sådan at den selv laver den SQL der skal bruges alt afhængigt af hvilke felter der er udfyldte. Håber du kan bruge det på den ene eller anden led, for som sagt så er jeg ikke nørd på det her område...
Avatar billede apo Praktikant
05. marts 2005 - 08:52 #7
Canedo > Det er desværre ikke noget jeg kan bruge...

Apo
Avatar billede apo Praktikant
05. marts 2005 - 09:21 #8
C'mon er det virkelig så svært et spørgsmål jeg har stillet, og hvor gemmer alle ASP-hajerne sig? :-/

Apo
Avatar billede apo Praktikant
05. marts 2005 - 10:54 #9
Godt så... Det er åbenbart ikke let at lave det jeg efterlyser. Jeg takker for forsøgene, men når desværre ikke videre her :-/

// Lukker

Apo
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