Avatar billede xcover Nybegynder
14. august 2003 - 18:10 Der er 11 kommentarer og
4 løsninger

Opret kun 1 gang

Hejsa...

Jeg er ved at lave et system på min hjemmeside så mine besøgende kan oprette sig som brugere.
Men jeg har problemmer med at lave scriptet sådan at det tjekker at der ikke er 2 ens Brugernavne.
Dvs. at når en bruger opretter sig skal den tjekke i databasen at der ikke er en anden der har valg det brugernavn han prøver at oprette.

Problemmet er nu at når en bruger opretter sig så skriver den at brugernavnet er taget vælg et andet. Selv om brugernavnet er nyt i databasen, men brugeren bliver alligevel oprettet...

Kan i rettet fejlen eller har i en anden kode der virker bedere så hjælp mig :-)

Her er min kode:
----------------------------
Response.Buffer = True

Set rs = Conn.Execute("SELECT COUNT(id) AS Antal From bruger WHERE brugernavn = '" & Request("formbrugernavn") & "'")
strBrugerOk = rs("antal")
rs.Close
Set rs = Conn.Execute("SELECT COUNT(id) AS Antal From bruger WHERE email = '" & Request("email") & "'")
strEmailOk = rs("antal")
rs.Close

if strBrugerOk <> "0" then
Response.Write "Fejl Brugernavn"
Response.Write "<br>"
Response.Write strBrugerOk
else if strEmailOk <> "0" then
Response.Write "Fejl Email"
Response.Write "<br>"
Response.Write strEmailOk
else

Session.LCID = 1030
datologin = (Date())
brugerbillede = "/Images/Userprofil/intetbillede.gif"

strbrugernavn = Request("formbrugernavn")
fornavn = Request("fornavn")
password = Request("password")
efternavn = Request("efternavn")
website = Request("website")
email = Request("email")
land = Request("land")
postnummer = Request("postnummer")
alder = Request("alder")
profiltekst = Request("profiltekst")
if profiltekst = "" then
profiltekst = "Ingen profiltekst"
end if
signatur = Request("signatur")
dato = Request("dato")
vip = "False"
viphar = "False"
vipopret = "False"
point = "0"
snydt = "0"

Const adOpenKeyset = 1
Const adLockOptimistic = 3

strINSERT = "INSERT INTO bruger (brugernavn, fornavn, password, efternavn, website, email, land, postnummer, alder, profiltekst, brugerbillede, vip, viphar, vipopret, point, snydt, signatur, dato, datologin) VALUES ( '"
    strINSERT = strINSERT &  strbrugernavn & "', '" & fornavn & "', '" & password & "', '" & efternavn & "', '" & website & "', '" & email & "', '" & land & "', '" & postnummer & "', '" & alder & "', '" & profiltekst & "', '" & brugerbillede & "', '" & vip & "', '" & viphar & "', '" & vipopret & "', '" & point & "', '" & snydt & "', '" & signatur & "', '" & dato & "', '" & datologin & "')"
 
    call Conn.execute(strINSERT)


Response.Write "Bruger Oprettet"
Response.Write "<br>"
Response.Write strBrugerOk

end if
end if
Avatar billede erikjacobsen Ekspert
14. august 2003 - 18:51 #1
if strBrugerOk <> 0 then
Avatar billede xcover Nybegynder
14. august 2003 - 18:55 #2
Nope det virker ikke...

Mit script virker kun hvis jeg fjerner:
call Conn.execute(strINSERT)

Men så gemmer den bare ikke brugeren men det virker...
Avatar billede xcover Nybegynder
14. august 2003 - 18:57 #3
Jeg tror det er fordi mit script åbenbart først opretter brugeren og derefter tjekker om brugernavnet findes i databasen og det gør det jo så...
Avatar billede erikjacobsen Ekspert
14. august 2003 - 19:03 #4
if strBrugerOk=0 and strEmailOk=0 then
  ......opret brugeren
else if strBrugerOk<>0 then
  ...fejl
else if strEmailOk<>0 then
  ...
end if
end if
Avatar billede cwboy Nybegynder
14. august 2003 - 19:41 #5
strBrugerOk = rs("antal") <-- Prøv at rette det til strBrugerOk = rs("Antal")

if strBrugerOk <> "0" then <-- prøv at rette til If CInt(strBrugerOk) <> 0 Then

(og det samme med strEmailOk begge steder)
Avatar billede xcover Nybegynder
14. august 2003 - 19:43 #6
-->erikjacobsen
Stadig samme fejl...
Avatar billede xcover Nybegynder
14. august 2003 - 19:47 #7
Kan man ikke tjekke et andet sted eller gøre dette på en helt anden måde ?
For jeg for hele tiden samme fejl...
Avatar billede cwboy Nybegynder
14. august 2003 - 19:51 #8
Hedder indtastningsfeltet til brugernavn "formbrugernavn"? før den første linje at indsætte følgende 2 linjer for at finde ud af, om det er det rigtige, databasen bliver spurgt om:

Response.Write Request("formbrugernavn")
Response.End
Avatar billede thomas_yde Nybegynder
14. august 2003 - 20:05 #9
hmm jeg synes din IF statement er lidt rodet.
Den opretter brugeren hvis strBrugerOk <> "0" eller hvis strEmailOk <> "0".

Jeg ville nok lave den sådan her:

set rs = Conn.Execute("SELECT brugernavn FROM bruger WHERE brugernavn ='"&Request.Form("formbrugernavn")&"'")
If Not rs.EOF Then
  strBrugerOk = false
Else
  strBrugerOk = true
End If

If strBrugerOk Then
Session.LCID = 1030
datologin = (Date())
brugerbillede = "/Images/Userprofil/intetbillede.gif"

strbrugernavn = Request("formbrugernavn")
fornavn = Request("fornavn")
password = Request("password")
efternavn = Request("efternavn")
website = Request("website")
email = Request("email")
land = Request("land")
postnummer = Request("postnummer")
alder = Request("alder")
profiltekst = Request("profiltekst")
if profiltekst = "" then
profiltekst = "Ingen profiltekst"
end if
signatur = Request("signatur")
dato = Request("dato")
vip = "False"
viphar = "False"
vipopret = "False"
point = "0"
snydt = "0"

Const adOpenKeyset = 1
Const adLockOptimistic = 3

strINSERT = "INSERT INTO bruger (brugernavn, fornavn, password, efternavn, website, email, land, postnummer, alder, profiltekst, brugerbillede, vip, viphar, vipopret, point, snydt, signatur, dato, datologin) VALUES ( '"
    strINSERT = strINSERT &  strbrugernavn & "', '" & fornavn & "', '" & password & "', '" & efternavn & "', '" & website & "', '" & email & "', '" & land & "', '" & postnummer & "', '" & alder & "', '" & profiltekst & "', '" & brugerbillede & "', '" & vip & "', '" & viphar & "', '" & vipopret & "', '" & point & "', '" & snydt & "', '" & signatur & "', '" & dato & "', '" & datologin & "')"
 
    call Conn.execute(strINSERT)


Response.Write "Bruger Oprettet"
Response.Write "<br>"
Else
  Response.Write "Brugernavnet eksistere allerede"
End If
Avatar billede xcover Nybegynder
14. august 2003 - 21:15 #10
--> thomas_yde

Selv om databasen er tom for brugere og jeg opretter fx. Tester så skriver den:
Brugernavnet eksistere allerede

Men den opretter stadig brugeren...
Avatar billede xcover Nybegynder
14. august 2003 - 21:20 #11
Hvordan laver man sådan:

adduser.asp - Form til oprettelse af bruger.
adduser-tjek.asp - ASP Script der tjekker om bruger eksistere.
adduser-gem.asp - Hvis bruger ikke eksistere gemmer den data.

Kan man ikke det ?
Avatar billede dta Nybegynder
14. august 2003 - 22:06 #12
Response.Buffer = True

Set rs = Conn.Execute("SELECT COUNT(id) AS Antal From bruger WHERE brugernavn = '" & Request("formbrugernavn") & "'")
strBrugerOk = rs("antal")
rs.Close
Set rs = Conn.Execute("SELECT COUNT(id) AS Antal From bruger WHERE email = '" & Request("email") & "'")
strEmailOk = rs("antal")
rs.Close

if strBrugerOk <> 0 then
Response.Write "Fejl Brugernavn"
Response.Write "<br>"
Response.Write strBrugerOk
elseif strEmailOk <> 0 then
Response.Write "Fejl Email"
Response.Write "<br>"
Response.Write strEmailOk
else

Session.LCID = 1030
datologin = (Date())
brugerbillede = "/Images/Userprofil/intetbillede.gif"

strbrugernavn = Request("formbrugernavn")
fornavn = Request("fornavn")
password = Request("password")
efternavn = Request("efternavn")
website = Request("website")
email = Request("email")
land = Request("land")
postnummer = Request("postnummer")
alder = Request("alder")
profiltekst = Request("profiltekst")
if profiltekst = "" then
profiltekst = "Ingen profiltekst"
signatur = Request("signatur")
dato = Request("dato")
vip = "False"
viphar = "False"
vipopret = "False"
point = "0"
snydt = "0"

Const adOpenKeyset = 1
Const adLockOptimistic = 3

strINSERT = "INSERT INTO bruger (brugernavn, fornavn, password, efternavn, website, email, land, postnummer, alder, profiltekst, brugerbillede, vip, viphar, vipopret, point, snydt, signatur, dato, datologin) VALUES ( '"
    strINSERT = strINSERT &  strbrugernavn & "', '" & fornavn & "', '" & password & "', '" & efternavn & "', '" & website & "', '" & email & "', '" & land & "', '" & postnummer & "', '" & alder & "', '" & profiltekst & "', '" & brugerbillede & "', '" & vip & "', '" & viphar & "', '" & vipopret & "', '" & point & "', '" & snydt & "', '" & signatur & "', '" & dato & "', '" & datologin & "')"
 
    call Conn.execute(strINSERT)


Response.Write "Bruger Oprettet"
Response.Write "<br>"
Response.Write strBrugerOk

end if

Prøv denne modificeret kode
Avatar billede dta Nybegynder
14. august 2003 - 22:08 #13
UUUPPPSS!

Response.Buffer = True

Set rs = Conn.Execute("SELECT COUNT(id) AS Antal From bruger WHERE brugernavn = '" & Request("formbrugernavn") & "'")
strBrugerOk = rs("antal")
rs.Close
Set rs = Conn.Execute("SELECT COUNT(id) AS Antal From bruger WHERE email = '" & Request("email") & "'")
strEmailOk = rs("antal")
rs.Close

if strBrugerOk <> 0 then
Response.Write "Fejl Brugernavn"
Response.Write "<br>"
Response.Write strBrugerOk
elseif strEmailOk <> 0 then
Response.Write "Fejl Email"
Response.Write "<br>"
Response.Write strEmailOk
else

Session.LCID = 1030
datologin = (Date())
brugerbillede = "/Images/Userprofil/intetbillede.gif"

strbrugernavn = Request("formbrugernavn")
fornavn = Request("fornavn")
password = Request("password")
efternavn = Request("efternavn")
website = Request("website")
email = Request("email")
land = Request("land")
postnummer = Request("postnummer")
alder = Request("alder")
profiltekst = Request("profiltekst")
if profiltekst = "" then profiltekst = "Ingen profiltekst"
signatur = Request("signatur")
dato = Request("dato")
vip = "False"
viphar = "False"
vipopret = "False"
point = "0"
snydt = "0"

Const adOpenKeyset = 1
Const adLockOptimistic = 3

strINSERT = "INSERT INTO bruger (brugernavn, fornavn, password, efternavn, website, email, land, postnummer, alder, profiltekst, brugerbillede, vip, viphar, vipopret, point, snydt, signatur, dato, datologin) VALUES ( '"
    strINSERT = strINSERT &  strbrugernavn & "', '" & fornavn & "', '" & password & "', '" & efternavn & "', '" & website & "', '" & email & "', '" & land & "', '" & postnummer & "', '" & alder & "', '" & profiltekst & "', '" & brugerbillede & "', '" & vip & "', '" & viphar & "', '" & vipopret & "', '" & point & "', '" & snydt & "', '" & signatur & "', '" & dato & "', '" & datologin & "')"
 
    call Conn.execute(strINSERT)


Response.Write "Bruger Oprettet"
Response.Write "<br>"
Response.Write strBrugerOk

end if
Avatar billede xcover Nybegynder
14. august 2003 - 22:29 #14
Hmm... Den opretter først brugeren og derefter tjekker den om brugeren findes og det gør han jo så derfor jeg stadig fejle.

Ked af det men det virker bare ik... Ellers tak for hjælpen alle sammen.
Avatar billede erikjacobsen Ekspert
14. august 2003 - 22:54 #15
Så er der mere kode end du har vist os her, hvis det virkelig opfører sig som du siger.
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