Avatar billede exp-ralle Nybegynder
18. august 2002 - 14:56 Der er 19 kommentarer og
1 løsning

Login system - HJÆÆÆÆÆLP

Hejsa...

Jeg kunne godt bruge lidt hjælp her :)

Jeg får denne fejl:

Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Microsoft Access-driver] Feltet "Brugere.Brugernavn" kan ikke indeholde en streng af længden nul.
/login sys/opret.asp, line 32

Når jeg prøver at oprette en ny bruger i mit login system.

Her er min kode:

<form method="post" action="opret.asp?action=opret">
<input type="text" name="Brugernavn"><br>
<input type="password" name="Kodeord"><br>
<input type="submit" name="opret" value="Opret">
</form>

<%

If Request.Querystring("action") = "opret" Then

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("mindatabase.mdb")
Conn.Open DSN

strSQL = "Select * From Brugere"

Set rs = Conn.Execute(strSQL)

Dim strBrugernavn, strKodeord, arrCheck, I
strBrugernavn = Request.Form("Brugernavn")
strBrugernavn = Replace(Brugernavn, "'", "")
strKodeord = Request.Form("Kodeord")
strKodeord = Replace(Kodeord, "'", "")
arrCheck = rs.GetRows()

For I = LBound(arrCheck, 2) To UBound(arrCheck, 2)
If arrCheck(0, I) = strBrugernavn Then
Response.Write "Brugernavnet er optaget"
Else
SQL = "Insert into Brugere (Brugernavn, Kodeord) values('" & strBrugernavn & "', '" & strKodeord & "')"
Conn.Execute(SQL)
End if
Next

Conn.Close
Set Conn = Nothing

End if

%>

Håber i kan hjælpe :)


Ralle
Avatar billede eagleeye Praktikant
18. august 2002 - 15:01 #1
Det betyder du prøver at ligge et tomt brugernavn i databasen. Det ser ud som det er i denne linie brugernbavet bliver tomt da du bruger Brugernavn og ikke strBrugernavn som navnet lige er gemt i så ret denne

strBrugernavn = Replace(Brugernavn, "'", "")


Til:
strBrugernavn = Replace(strBrugernavn, "'", "")


Prøv at
Avatar billede exp-ralle Nybegynder
18. august 2002 - 15:07 #2
Mange tak, nu virker det.
Men når man opretter indsætter den navnet og koden 2 gange, hvordan kan det være ?
Avatar billede exp-ralle Nybegynder
18. august 2002 - 15:10 #3
Den gentager både brugernavnet er optaget, og hvis det ikke er så indsætter den det en 5 - 10 gange...

Hvad satan sker der man (LOOOOOOOOOOOOOOL)
Avatar billede eagleeye Praktikant
18. august 2002 - 15:11 #4
Du har en for som hendet alle rows ?? fra recordet sette så hver gang strBrugernavn er forskellig fra arrCheck(0,I) så indsætter den en det nye brugernavn, så næste gang bliver det indsat 3 gange ???


For I = LBound(arrCheck, 2) To UBound(arrCheck, 2)
If arrCheck(0, I) = strBrugernavn Then
Response.Write "Brugernavnet er optaget"
Else
SQL = "Insert into Brugere (Brugernavn, Kodeord) values('" & strBrugernavn & "', '" & strKodeord & "')"
Conn.Execute(SQL)
End if
Next
Avatar billede eagleeye Praktikant
18. august 2002 - 15:13 #5
Hvis du vil tjekke om et brugernavn findes kan det gøres sådan her:

SQL = "SELECT Brugernavn FROM Brugere WHERE Brugernavn = '" & strBrugernavn & "'"
Set rs = Conn.execute (SQL)
if rs.EOF then
  'Opret nyt bruger i databasen
else
  'Brugernavnet findes
end if
Avatar billede exp-ralle Nybegynder
18. august 2002 - 15:13 #6
Ja det er vist rigtigt det du siger, men den kode du ligger er det bare min eller har du ændret noget "afgørende" i den ?
Avatar billede exp-ralle Nybegynder
18. august 2002 - 15:17 #7
Prøver lige...
Avatar billede eagleeye Praktikant
18. august 2002 - 15:18 #8
Du skal fjenre det For I = .... og indsætte min kode med den SQL som indsætter i databasen.
Avatar billede eagleeye Praktikant
18. august 2002 - 15:20 #9
Det samme gælder kode ord der står kodeord og ikke strKodeord i Replace functionen:

Din kode vil se ca. sådan ud med mit eks:

  strKodeord = Request.Form("Kodeord")
  strKodeord = Replace(strKodeord, "'", "")    '<---- ændret til strKodeord
Avatar billede exp-ralle Nybegynder
18. august 2002 - 15:23 #10
Ok nu virker opret da, men selvom brugeren findes så opretter den bare en ny, hvorfor nu det ?
Her er hele min nye kode:

<form method="post" action="opret.asp?action=opret">
<input type="text" name="Brugernavn"><br>
<input type="password" name="Kodeord"><br>
<input type="submit" name="opret" value="Opret">
</form>

<%

If Request.Querystring("action") = "opret" Then

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("mindatabase.mdb")
Conn.Open DSN

strSQL = "Select * From Brugere Where Brugernavn = '" & strBrugernavn & "'"

Set rs = Conn.Execute(strSQL)

Dim strBrugernavn, strKodeord
strBrugernavn = Request.Form("Brugernavn")
strBrugernavn = Replace(strBrugernavn, "'", "")
strKodeord = Request.Form("Kodeord")
strKodeord = Replace(strKodeord, "'", "")

If rs.BOF OR rs.EOF Then
SQL = "Insert into Brugere (Brugernavn, Kodeord) values('" & strBrugernavn & "', '" & strKodeord & "')"
Conn.Execute(SQL)
Else
Response.Write "Brugernavnet er optaget..."
End if

Conn.Close
Set Conn = Nothing

End if

%>
Avatar billede thesurfer Nybegynder
18. august 2002 - 15:24 #11
skal du ikke have noget kode der samligner den nuværende record med strBrugernavn ?
Avatar billede eagleeye Praktikant
18. august 2002 - 15:25 #12
Disse to linier:

strSQL = "Select * From Brugere Where Brugernavn = '" & strBrugernavn & "'"

Set rs = Conn.Execute(strSQL)

Skal flyttes ned mellem

strKodeord = Replace(strKodeord, "'", "")

            '<------------------------------ ind her

If rs.BOF OR rs.EOF Then

For ellers vil strBrugernavn være tom da navnet ikke er hendtet fra formen.
Avatar billede thesurfer Nybegynder
18. august 2002 - 15:25 #13
.. ellers indsætter den det nye strBrugernavn lige meget hvad.
Avatar billede exp-ralle Nybegynder
18. august 2002 - 15:27 #14
thesurfer ---> hvad mener du helt præsist ?

For jeg vælger alt fra databasen hvor feltet Brugernavn indeholder det brugernavn man tastede og tjekker derefter om der er et felt med noget i.
Hvis ikke så indsætter jeg en ny bruger.
Hvis der er skulle der stå Brugeren er optaget men det virker så ikke :(
Avatar billede eagleeye Praktikant
18. august 2002 - 15:28 #15
Man får databasen til at tjekke om strBrugernavn findes i databasen, det gøres med denne SQL:
strSQL = "Select * From Brugere Where Brugernavn = '" & strBrugernavn & "'"

og når man så udføre SQL'en med:
Set rs = Conn.Execute(strSQL)

Så vil databsen returnere en record med brugernavet i hvis det findes så det som tjekker om det nye brugernavn findes er denne if-sætning for hvis recordet'et er tomt så findes bruger navet ikke, hvis der er data i recordset'et så vil rs.EOF være false.

If rs.BOF OR rs.EOF Then
Avatar billede exp-ralle Nybegynder
18. august 2002 - 15:29 #16
Det virkede desværre ikke at flytte de linier :(
Avatar billede exp-ralle Nybegynder
18. august 2002 - 15:31 #17
Kode:

<form method="post" action="opret.asp?action=opret">
<input type="text" name="Brugernavn"><br>
<input type="password" name="Kodeord"><br>
<input type="submit" name="opret" value="Opret">
</form>

<%

If Request.Querystring("action") = "opret" Then

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("mindatabase.mdb")
Conn.Open DSN

Dim strBrugernavn, strKodeord
strBrugernavn = Request.Form("Brugernavn")
strBrugernavn = Replace(strBrugernavn, "'", "")
strKodeord = Request.Form("Kodeord")
strKodeord = Replace(strKodeord, "'", "")

strSQL = "Select * From Brugere Where Brugernavn = '" & strBrugernavn & "'"

Set rs = Conn.Execute(strSQL)

If NOT rs.BOF OR rs.EOF Then
SQL = "Insert into Brugere (Brugernavn, Kodeord) values('" & strBrugernavn & "', '" & strKodeord & "')"
Conn.Execute(SQL)
Else
Response.Write "Brugernavnet er optaget..."
End if

Conn.Close
Set Conn = Nothing

End if

%>
Avatar billede eagleeye Praktikant
18. august 2002 - 15:32 #18
der skal ikke være NOT i If'en og det skulle være nok bare at tjekke EOF

If NOT rs.BOF OR rs.EOF Then

Til:

If rs.EOF Then
Avatar billede exp-ralle Nybegynder
18. august 2002 - 15:32 #19
Jo det hjalp at flytte dem, glemte bare at fjerne NOT fra:

If NOT rs.BOF OR rs.EOF Then
----^
Avatar billede exp-ralle Nybegynder
18. august 2002 - 15:33 #20
Mange takker
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