Avatar billede Slettet bruger
09. november 2008 - 16:53 Der 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?

På forhånd tak.


    // Steeven
Avatar billede keysersoze Guru
09. november 2008 - 16:57 #1
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
Avatar billede Slettet bruger
09. november 2008 - 16:59 #2
Selvfølgelig :)
Den kendte jeg jo godt, men så langt tænke jeg ikke lige...

Tusind tak for hjælpen - læg et svar.

  // Steeven
Avatar billede keysersoze Guru
09. november 2008 - 17:05 #3
:)
Avatar billede Slettet bruger
09. november 2008 - 17:29 #4
Således

Tak for det hurtige svar :)


  // Steeven
Avatar billede thesurfer Nybegynder
09. november 2008 - 17:37 #5
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"

Men selv det kan gå galt..
Avatar billede thesurfer Nybegynder
09. november 2008 - 17:42 #6
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.
Avatar billede 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.


  // Steeven
Avatar billede Slettet bruger
09. november 2008 - 17:59 #8
Men mange tak for kommentaren TheSurfer :)
Avatar billede thesurfer Nybegynder
09. november 2008 - 18:04 #9
Simpelt, sikkert og lige til:

dim brugernavn, kodeord
brugernavn = replace(request.form("brugernavn"), "'", "''")
kodeord = replace(request.form("kodeord"), "'", "''")

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.
Avatar billede thesurfer Nybegynder
09. november 2008 - 18:04 #10
...og det var da så lidt.. :-)
Avatar billede Slettet bruger
12. november 2008 - 16:46 #11
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
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