09. november 2008 - 16:53Der er
10 kommentarer og 1 løsning
Tjek, om input findes i databasen
Hej alle eksperter
Kan man på en eller anden måde tjekke, om det, der er indtastet i et tekstfelt findes i databasen? Hvis man fx skal opdatere noget info i et bestemt felt, så indtaster man fx "person1" i person-feltet, og så skal man ved SQL-forespørgsel finde frem til den post, hvor der står "person1" i person-kolonnen. Men hvis nu der slet ikke findes en sådan post, så skal man naturligvis have en fejlmeddelelse istedet.
Altså noget i stil med:
IF [person1 findes ikke] THEN [Fejlmeddelelse] ELSE [udfør SQL-forespørgslen] END IF
Hvorledes undersøger man, om der findes en post med den angivede værdi i den pågældende kolonne?
sql = "SELECT COUNT(id) as MyCount FROM tabel WHERE name = 'steeven' set rs = conn.execute(sql) If rs("MyCount") > 0 Then 'findes Else 'findes ikke End If
Synes godt om
Slettet bruger
09. november 2008 - 16:59#2
Selvfølgelig :) Den kendte jeg jo godt, men så langt tænke jeg ikke lige...
Alternativ ("*", kan evt erstattes af "top 1" eller "limit 1"):
sql = "select * from tabel where name = 'steeven'" set rs = conn.execute(sql) If rs.eof Then 'der findes ikke poster med navnet "steeven" Else 'posten "steeven" findes End If
Hvis der ikke findes poster med navnet "steeven", så findes der ikke poster med navnet "steeven".. :-)
Men for mig lyder det som en fejl, at lave en SQL sætning på den måde, da der sagtens kan stå "steeven" flere steder (og kan afvikles af flere brugere).. Med mindre at du direkte har valgt at der ikke skal være dupletter, hvilket du ikke har skrevet i dit spørgsmål.
I stedet skal man opdatere på unikke felter, eller kombinerer felter så man får noget unik..
Eksempel: where fornavn = "stee" and efternavn = "ven" and noget = "tredje"
Hvis man ikke helt kan se pointen, er her en alternativ forklaring:
"Forkert": - Hvis man siger "Hr Hansen" har vundet 100 kr, ved man ikke hvem af den millioner (overdrivelse fremmer forståelse) der har vundet de 100 kr.
- Hvis man siger "Hr Hans Hansen" (dvs, fornavn og efternavn) har vundet 100 kr., vil antallet af muligepersoner er meget begrænset, men der kan stadigvæk være mere end 1 person med det navn.
"Rigtigt":
- Hvis man siger "personen med cpr.nr 123456-7890" har vundet 100 kr, så er der kun 1 person der kan have vundet, da cpr.nr er unikke.
Synes godt om
Slettet bruger
09. november 2008 - 17:58#7
Okay.
Det jeg skal bruge er en måde at validere et loginfelt på.
Brugeren indtaster et brugernavn og et password. Jeg kan sagtens undersøge, hvorvidt brugernavn og password hører sammen, og derved give en fejlmeddelelse, hvis de ikke gør. Men det kan jeg kun, hvis brugernavnet eksisterer! Jeg undersøger nemlig: "er passwordet, der tilhører brugernavnet, identisk med det indtastede password".
Men hvis ikke brugernavnet, der indtastes, findes, så kommer der jo en fejl fra browseren(/serveren). Det var dét jeg skulle ordne.
Og ja, der er med sikkerhed kun én bruger med et bestemt brugernavn - ingen dubletter.
sql = "select * from TABEL where brugernavn = '" & brugnavn & "' and kodeord = '" & kodeord & "'" set rs = conn.execute(sql) if rs.eof then response.write "Brugernavnet eller kodeordet er forkert!" else resposne.write "Yes, alt er i orden" end if
PS: Husk at erstatte '-tegnet med 2 gange '-tegnet, da man ellers kan "hacke" dit login, med at skrive SQL-kode i dine input-felter.
Tusind tak for denne metode! Det var lige hvad jeg skulle bruge. Simpelt, sikkert og lige til ;)
Det er lige før du skulle have point for den her, men jeg har uddelt points desværre. Men mange tak for alligevel.
// Steeven
Synes godt om
Ny brugerNybegynder
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.