Avatar billede justdoit Nybegynder
19. maj 2002 - 16:44 Der er 19 kommentarer og
2 løsninger

Tjek brugernavn i databasen

Når en bruger opretter et brugernavn, vil jeg gerne have tjekket at der ikke er to brugere der har det samme brugernavn. Men hvordan undersøger jeg det??

Jeg har forestillet mig at brugeren godt må have samme brugernavn så længe at koden er forskelllig.

Formfeltet hedder "brugernavn" hvor brugeren skriver sit brugernavn, og "kode" hvor der skrives password.

Her er mine koder hvor der skrives til databasen, men valideringen skal vel ske før??
Avatar billede medions Nybegynder
19. maj 2002 - 16:46 #1
While NOT rs.EOF
If rs("brugernavn") = Request.Form("brugernavn") Then
Response.Write("de er ens.. fuck dig")
End If
rs.MoveNext
Wend

//>Rune
Avatar billede justdoit Nybegynder
19. maj 2002 - 16:46 #2
Ups - her er koderne:


<% 
'opretter forbindelse til databasen medlem
Set Rs = Server.CreateObject ("ADODB.Connection")
set rec = server.createobject("ADODB.recordset")
Rs.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("../cinemax/db/medlem.mdb")
Rec.open "bruger", Rs, 2, 3

'brugers oplysninger lægges i databasen
Rec.Addnew
Rec("brugernavn") = Request ("brugernavn")
Rec("kode") = Request ("kode")

REC.Update

Rec.close
set Rec=nothing
%>
Avatar billede justdoit Nybegynder
19. maj 2002 - 16:50 #3
Ok det har jeg sat ind sådan:

<%
While NOT rs.EOF
If rs("brugernavn") = Request.Form("brugernavn") Then
Response.Write("de er ens.. fuck dig")
End If
rs.MoveNext
Wend
 
'opretter forbindelse til databasen medlem
Set Rs = Server.CreateObject ("ADODB.Connection")
set rec = server.createobject("ADODB.recordset")
Rs.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("../cinemax/db/medlem.mdb")
Rec.open "bruger", Rs, 2, 3



Men jeg får følgende fejl:

Der opstod en Microsoft VBScript-kørselsfejl fejl '800a01a8'

Et objekt er obligatorisk: 'rs'
Avatar billede kimiwan Nybegynder
19. maj 2002 - 16:51 #4
Det hurtigste er at søge efter en record med det pågældende brugernavn:

set rs = conn.execute("select brugernavn from tabellen where brugernavn = '" & request("brugernavn") & "'")

Så tjekker du for end of file - hvis den er end of file findes brugernavnet ikke, og så kan du godt oprette en ny bruger med det brugernavn - ellers kan du ikke:

if rs.eof then

'opret bruger koden her

else

response.write "Sorry pal, brugernavnet er allerede taget"

end if
Avatar billede askhoej Praktikant
19. maj 2002 - 16:52 #5
strSQL = "SELECT count(1) as antal FROM bruger WHERE brugernavn = '" & Request("brugernavn") & "'"

Rec.open strSQL, rs,2,3
if REC("antal") > 0 then
'brugeren findes allerede
end if
Avatar billede medions Nybegynder
19. maj 2002 - 16:53 #6
<% 
'opretter forbindelse til databasen medlem
Set Rs = Server.CreateObject ("ADODB.Connection")
set rec = server.createobject("ADODB.recordset")
Rs.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("../cinemax/db/medlem.mdb")
Rec.open "bruger", Rs, 2, 3

While Not rec.EOF
    If rec("brugernavn") = Request.QueryString("brugernavn")
        Response.Write("Brugeren findes i forvenen!")
    Else
        'brugers oplysninger lægges i databasen
        Rec.Addnew
        Rec("brugernavn") = Request ("brugernavn")
        Rec("kode") = Request ("kode")

        REC.Update
    End If
rec.MoveNext()
Wend



Rec.close
set Rec=nothing
%>

//>Rune
Avatar billede askhoej Praktikant
19. maj 2002 - 16:56 #7
medions >> opretter du så ikke en ny bruger for hver bruger der allerede findes i recordsettet?
Avatar billede medions Nybegynder
19. maj 2002 - 16:59 #8
*LOL* DOH! *G*
JustDoIt> Øhhh *G* tag lige og brug de andres.... - og smid mit af H... til.. *G*

//>Rune
Avatar billede kimiwan Nybegynder
19. maj 2002 - 17:01 #9
medions: hvorfor åbner du hele tabellen og looper gennem hele recordsettet - du kan bare bruge "SELECT id FROM tabelnavn WHERE brugernavn = '"& request("brugernavn") &"'" - så undgår du at sætte maskinen til at lave en masse ekstra arbejde!
Avatar billede justdoit Nybegynder
19. maj 2002 - 17:07 #10
hej kimiwan

Vil du ikke lige prøve at sætte det ind, da jeg har prøvet uden held??

:)
Avatar billede kimiwan Nybegynder
19. maj 2002 - 17:16 #11
Husk at skrive dit rigtige tabelnavn i begge sqlstrengene!

<%
'henter variabler ind
strBrugernavn = replace(request("brugernavn"),"'","''")
strKode = replace(request("kode"),"'","''")

'instantierer og åbner connection
set cn = server.createobject("adodb.connection")
cn.open "Provider=Microsoft.Jet.OleDb.4.0;Data Source="&server.MapPath("../cinemax/db/medlem.mdb")

'tjekker om brugernavn er taget
set rs = cn.execute("SELECT brugernavn FROM tabelnavn WHERE brugernavn = '"&strBrugernavn&"'")

if rs.eof then
    'brugernavn er ikke taget, så opretter bruger
    cn.execute("INSERT INTO tabelnavn (brugernavn, kode) VALUES ('"&strBrugernavn&"','"&strKode&"')")
    response.write "Bruger oprettet!"
else
    'brugernavn er allerede taget, så viser fejlbesked
    response.write "Brugernavnet er allerede taget - vælg et andet og prøv igen!"
end if

'lukker connection og rydder op
cn.close
set rs = nothing
set cn = nothing
%>
Avatar billede justdoit Nybegynder
19. maj 2002 - 17:16 #12
hej kimiwan

Her er mine koder, men jeg får en fejl??

<% 
'opretter forbindelse til databasen medlem
Set Rs = Server.CreateObject ("ADODB.Connection")
set rec = server.createobject("ADODB.recordset")
Rs.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("../cinemax/db/medlem.mdb")
Rec.open "bruger", Rs, 2, 3

'Her tjekkes om brugernavnet allerede eksistere
set rs = conn.execute("select brugernavn from bruger where brugernavn = '" & request("brugernavn") & "'")
if rs.eof then

'brugers oplysninger lægges i databasen
Rec.Addnew

Rec("brugernavn") = Request ("brugernavn")
Rec("kode") = Request ("kode")

REC.Update

else

response.write "Sorry pal, brugernavnet er allerede taget"

end if

'lukker forbindelse til databasen
Rec.close
set Rec=nothing
%>


Fejlen er:

Et objekt er obligatorisk: 'conn'
Avatar billede justdoit Nybegynder
19. maj 2002 - 17:17 #13
ok tak - prøver lige...
Avatar billede justdoit Nybegynder
19. maj 2002 - 17:29 #14
Hvor skriver jeg flere ting til databasen? Så som e-mail, telefonnr osv??
Avatar billede justdoit Nybegynder
19. maj 2002 - 17:36 #15
Tror jeg fandt ud af det!!...
Avatar billede kimiwan Nybegynder
19. maj 2002 - 17:46 #16
tror eller ved? ;o)
Avatar billede justdoit Nybegynder
19. maj 2002 - 18:03 #17
Jeg ved:) at det virker nu, men når brugernavnet aller eksistere så skriver den:

response.write "Brugernavnet er allerede taget osv." - men jeg vil gerne have den til at gå tilbage til formfeltet hvor der fx. skal stå med rød skrift ud for Brugernavn, - "Vælg et nyt brugernavn..

Er det noget vi kan finde ud af??
Avatar billede medions Nybegynder
19. maj 2002 - 18:07 #18
Så udskift Response.Write med Response.Redirect("filnavn.asp")

//>Rune
Avatar billede justdoit Nybegynder
19. maj 2002 - 18:07 #19
Er det noget med noget Response.Redirect - hvor der skal være et ASP script der kun aktiveres når brugerne bliver Redirectet?
Avatar billede justdoit Nybegynder
19. maj 2002 - 18:11 #20
...eller skal jeg hente en helt ny side hvor jeg skriver med fx. rødt at "Brugernavnet er taget"?
Avatar billede justdoit Nybegynder
19. maj 2002 - 18:29 #21
Er der en der ved hvad jeg skal gøre for at få Redirect, så jeg skal skrive hvad fejlen er på siden, og ikke via en alert??
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