Avatar billede melted Nybegynder
18. juli 2003 - 21:41 Der er 8 kommentarer og
2 løsninger

Søgefunktion til navn

Jeg har en database med en masse bruger-navne hvor de er indsat i felterne "fornavn" og "efternavn".

Da brugerne skal være lidt små-anonyme, kan man kun se deres fornavn og det første bogstav i efternavn - som f.eks. "Bjarne B" eller "Anne Marie K".

Mit problem går så ud på at jeg skal have lavet en søgefunktion hvor folk kan søge på bestemte personer, men hvordan kan man søge i to forskellige database-felter på samme tid og samtidigt kun søge på det første bogstav i efternavnet? Det skal også være sådan at hvis man ikke ved hvad efternavns-bogstavet er, så skal man selvfølgeligt kunne se alle der har det fornavn man har søgt på.

F.eks.:
Søgning: "Jens A"
Resultat: "Jens A", "Jens Christian A", "Christian Jens A"

Eller

Søgning: "Jens"
Resultat: Alle der hedder noget med Jens

Går ud fra det er noget med noget streng-manipulation, men det er jeg ikke særlig haj til.

Håber nogen kan hjælpe.
Avatar billede Slettet bruger
18. juli 2003 - 21:50 #1
Noget a la dette:
sql = "Select fornavn, left(efternavn,1) as efternavn from tabel where fornavn like '%" & fornavnvariabel & "%' and efternavn like '" & efternavnsforbogstav & "%'"
Avatar billede cesil Nybegynder
18. juli 2003 - 21:55 #2
prøv noget a la det her

str = request.form("sogefelt")
tabel = split(str," ")

sql = "select * from tabel where"
sql = sql & "fornavn like '%" & tabel(0) & "'%"
if tabel(1)<>"" then
  sql = sql & " and efternavn like '" & tabel(1) & "'%"
end if
Avatar billede cesil Nybegynder
18. juli 2003 - 21:56 #3
rettet fejl
sql = "select * from tabel where"
sql = sql & "fornavn like '%" & tabel(0) & "%'"
if tabel(1)<>"" then
  sql = sql & " and efternavn like '" & tabel(1) & "%'"
end if
Avatar billede melted Nybegynder
18. juli 2003 - 22:03 #4
Der er kun et felt man taster søgning ind i, så man kan ikke taste fornavn ind i et felt og efternavn ind i et andet...
Avatar billede Slettet bruger
18. juli 2003 - 22:10 #5
Det tager cecil højde for her:
str = request.form("sogefelt")
tabel = split(str," ")
Avatar billede melted Nybegynder
18. juli 2003 - 22:20 #6
Jeg får en fejl hvis jeg ikke har skrevet noget efternavns-bogstav:
Subscript out of range: '[number: 1]'
Avatar billede melted Nybegynder
18. juli 2003 - 22:22 #7
Hvis jeg f.eks. søger på "Chris H", så får jeg resultater som f.eks. "Christian H", "Christine H" og "Chris H", så jeg skal nok også bruge en form for måde hvorpå man kan definere om man vil søge på dele af navnet eller præcist det navn man har indtastet
Avatar billede Slettet bruger
18. juli 2003 - 22:38 #8
Ok, så tager vi den "lange": (Frit fra hukommelsen)

str = Request.Form("sogefelt")
if instr(str," ") then
  tabel = split(str," ")
  strFornavn = tabel(0)
  strEfternavn = Left(tabel(1),1)
Else
  strFornavn = str
  strEfternavn = ""
End If

sql = "Select fornavn, left(efternavn,1) as efternavn from tabel where fornavn like '%" & strFornavn & "%' and efternavn like '" & strEfternavn & "%'"
Avatar billede Slettet bruger
18. juli 2003 - 22:41 #9
Forklaring til LIKE, så kan du selv vælge hvordan du vil bygge det op:
'%'    tager alt
'ab%'  tager alle der starter med ab
'%ab'  Tager alle der ender på ab
'%ab%' tager alle der indeholder ab
Du kan således også bruge mellemrum hvis fornavnet skal være jens:
'%jens %' tager alle som hedder jens mellemrum og så noget, byg selv videre :-)
Avatar billede thesurfer Nybegynder
18. juli 2003 - 23:01 #10
smart.. jeg ledte engang efter noget der lignede det her.. fandt det dog ikke..
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