Avatar billede madeindk Nybegynder
25. marts 2006 - 19:34 Der er 11 kommentarer og
1 løsning

Gør ikke forskel på store og små bogstaver

Hej eksperter!

Jeg har et problem på min side - folk kan godt kalde sig fx. lars selvom der er en bruger der hedder "Lars"

Hvordan kan jeg lave om på det?
Avatar billede kjulius Novice
25. marts 2006 - 21:11 #1
Du omformer både brugernavn fra tabellen og fra formen til samme case når du slår op i din tabel:

strSQL = "SELECT bruger FROM brugere WHERE UCase(bruger) = '" & UCase(strBruger) & "'"

på den måde bliver de to felter der skal sammenlignes altid i "store" bogstaver.
Avatar billede netjay Nybegynder
25. marts 2006 - 21:40 #2
Avatar billede madeindk Nybegynder
25. marts 2006 - 21:48 #3
Jamen hvad så når den gemmer? Gemmer den så ikke brugernavnet med store bogstaver?
Avatar billede ffsoft Praktikant
25. marts 2006 - 22:44 #4
Denne funktion laver en stren om til små bogstaver og
laver så det første om til stort:

Function Proper(strVar)
strVar = LCase(strVar)
strVar = UCase(Left(strVar, 1)) & Mid(strVar, 2, Len(strVar))
Proper = strVar
End Function
Avatar billede nidyahou Praktikant
26. marts 2006 - 11:23 #5
den gemmer ikke i store bogstaver fordi den jo ikke laver strBruger eller bruger om, men bare siger at den skal sammenligne dem sotre. Hvis de skulle laves om å ville der have stået

strBruger = Ucase(strBruger)
kjulius eksempel er fuldt funktionsdygtigt
Avatar billede mekawi Nybegynder
26. marts 2006 - 13:46 #6
Du skal bare altid sammenligne enten lCase eller uCase af brugernavnene fra db'en (ligesom kjulius foreslår). Derefter kan det jo være ligemeget om dine brugere tilmelder sig med stort forbogstav eller ej....
Avatar billede kjulius Novice
26. marts 2006 - 17:29 #7
Netop. Når du har fundet ud af, at brugeren ikke er i din database tidligere (med en SQL som den viste), laver du bare en normal INSERT operation, hvor du opretter brugeren uden konvertering (altså som brugeren har indtastet det).

Det er kun under selve tjekket du skal sørge for at begge dele er i samme "Case". F.eks.

I tabellen er brugere blevet oprettet som "Lars". Brugeren prøver at logge på med "lars". Ved at konvertere begge dele til upper-case før sammenligningen, sammenlignes "LARS" med "LARS". Du vil altså finde ud af, at brugeren var oprettet.
Du vil sandsynligvis vise brugeren, sådan som han oprindelig var oprettet, altså som "Lars" (feltet fra tabellen). Det sidste er naturligvis helt op til dig.
Avatar billede kjulius Novice
26. marts 2006 - 19:18 #8
Hvis du ikke tjekker på den måde, men har sat en unique key på det brugernavnsfelt, og bare laver en INSERT INTO, hvorefter du tjekker for en fejlmelding (en mere professionel metode, som vil kunne anvendes ved meget tidskritiske sites, hvor der er mange samtidige brugere), kan du ikke bruge den metode.

I så fald vil du evt. skulle bruge to felter. Et hvor brugernavnet altid er konverteret til upper- eller lowercase, og et felt med brugernavnet som det oprindeligt var angivet.

INSERT INTO brugere (ubruger, bruger) values(ucase("Lars"), "Lars")

Hvis det giver en fejl (fordi uppercase værdien af "Lars" allerede fandtes i tabellen), betyder det, at brugeren allerede var oprettet. Herefter kan man så hente selve brugerens oplysninger:

SELECT * FROM brugere WHERE UCase(bruger) = Ucase("Lars")

Det er altså en "omvendt" metode, som lægger tjekket i databasen, hvor der skal være et unique index på det felt, der tjekkes på.
Det vil give en fejl, når man forsøger at indsætte en bruger som allerede findes. Den fejl skal man "fange" og reagere på.
Avatar billede kjulius Novice
26. marts 2006 - 19:40 #9
Hvis du vælger den sidste metode, kan følgende artikel sikkert være til hjælp:

http://www.aspfaq.com/show.asp?id=2509
Avatar billede eagleeye Praktikant
27. marts 2006 - 10:04 #10
Normalt er SQL ikke case sensitiv med mindre man specielt har sat kolonne som case sensitiv eller valgt en kolonne type er er case sensitiv.

Så hvilken type kolonne bruger du til brugernavnet?
Avatar billede kjulius Novice
29. marts 2006 - 20:18 #11
Det kommer vist også an på hvilken database, der er tale om, hvordan ODBC driver opsætningen er, osv.
Avatar billede madeindk Nybegynder
03. juni 2006 - 21:35 #12
Lukker - fandt en løsning
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