Avatar billede znuggle.com Nybegynder
12. juni 2003 - 17:26 Der er 6 kommentarer og
1 løsning

Fejl i ASP kode

Hej!... Jeg får denne fejl:


Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Microsoft][ODBC Microsoft Access Driver] Field 'Community.Username' cannot be a zero-length string.

/znuggle_com/community/docreate.asp, line 56


i denne kode:


<%@ Language=VBScript %>
<%
Response.Buffer = True
page = Request.QueryString("page")

If page = "docreate1" Then

If Request.Form("username") = "" Then
    text = "Please fill in ALL fields!"
    Response.Redirect "create.asp"
End If

If Request.Form("password1") = "" Then
    text = "Please fill in ALL fields!"
    Response.Redirect "create.asp"
End If

If Request.Form("password2") = "" Then
    text = "Please fill in ALL fields!"
    Response.Redirect "create.asp"
End If

set Conn = Server.createobject("adodb.connection")
conn.Open "DBQ="& Server.MapPath(".") &"/db.mdb; DefaultDir=DBQ="& Server.MapPath("/") &";Driver={Microsoft Access Driver (*.mdb)};"

SQL = "select * from Community"
Set RS = conn.Execute(SQL)
RS.MoveFirst

Do While NOT RS.EOF
If Request.Form("username") = RS("nick") Then
    text = "Username does already exist. Please pick another."
    Response.Redirect "create.asp"
else
    If Request.Form("password1") = Request.Form("password2") Then
        Response.Redirect "docreate.asp?page=docreate2"
    else
        text = "The passwords did not match."
        Response.Redirect "create.asp"
    End If
End If
Loop
RS.MoveFirst

End If

If page = "docreate2" Then

Const adOpenKeyset = 1
Const adLockOptimistic = 3

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("db.mdb")&";"
Session.LCID = 3081

    Connect.Execute "Insert into Community (Nick, Password) values ('" & Request.Form("username") & "','" & Request.Form("password1") & "')"

Connect.Close
set Connect = Nothing
Response.Redirect "login.asp"

End If
%>


Nogen der kan hjælpe??
Avatar billede tuctoh Nybegynder
12. juni 2003 - 17:27 #1
Connect.Execute "Insert into Community (Nick, Password) values ('" & Request.Form("username") & "','" & Request.Form("password1") & "')"

i den linie skal du giver feltet "username" en værdi - i din database er username sat til ikke at tillade null-værdier
Avatar billede eagleeye Praktikant
12. juni 2003 - 17:34 #2
Ja det betyder fejlen men problemmet er i virkeligheden den måde koden er lavet på

Når du laver en redirect som denne:
Response.Redirect "docreate.asp?page=docreate2"

Midster man de data som er sent til siden.


Den måde du har lavet tjek for om brugernav findes er ikke helt optimal da den kun tjekker den føste post om brugernanvet er ens med det nyye. Det bør laves i en SQL som tjekker som brugernavnet findes..



SQL = "select * from Community WHERE username = '" & request.form("username") & "'"
Set RS = conn.Execute(SQL)

if  RS.EOF then
  'Opret bruger..

else

end if
Avatar billede eagleeye Praktikant
12. juni 2003 - 17:37 #3
Prøv at lave din kode sådan her:



<%@ Language=VBScript %>
<%
Response.Buffer = True
page = Request.QueryString("page")

If page = "docreate1" Then

If Request.Form("username") = "" Then
    text = "Please fill in ALL fields!"
    Response.Redirect "create.asp"
End If

If Request.Form("password1") = "" Then
    text = "Please fill in ALL fields!"
    Response.Redirect "create.asp"
End If

If Request.Form("password2") = "" Then
    text = "Please fill in ALL fields!"
    Response.Redirect "create.asp"
End If

If Request.Form("password1") <> Request.Form("password2") Then
  text = "The passwords did not match."
  Response.Redirect "create.asp"
End If

set Conn = Server.createobject("adodb.connection")
conn.Open "DBQ="& Server.MapPath(".") &"/db.mdb; DefaultDir=DBQ="& Server.MapPath("/") &";Driver={Microsoft Access Driver (*.mdb)};"

SQL = "select * from Community where username = '" & Replace(Request.Form("username"),"'","''")
Set RS = conn.Execute(SQL)

if RS.EOF then

    conn.Execute "Insert into Community (Nick, Password) values ('" & Replace(Request.Form("username"),"'","''") & "','" & Replace(Request.Form("password1"),"'","''") & "')"

    conn.Close
    Response.Redirect "login.asp"

else
  text = "Username does already exist. Please pick another."
  Response.Redirect "create.asp"
End If

End If
%>
Avatar billede znuggle.com Nybegynder
12. juni 2003 - 17:38 #4
Okay... Kan jeg lave det på nogen anden måde end If page = "XXX" then ??
Avatar billede znuggle.com Nybegynder
12. juni 2003 - 17:44 #5
Hmm jeg får denne fejl:

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error in string in query expression 'username = 'test'.

/znuggle_com/community/docreate.asp, line 32

--> http://www.znuggle.com/community/create.asp
Avatar billede eagleeye Praktikant
12. juni 2003 - 17:45 #6
Hov der mangler også lige noget i denne linje:

SQL = "select * from Community where username = '" & Replace(Request.Form("username"),"'","''")


Sådan her:

SQL = "select * from Community where username = '" & Replace(Request.Form("username"),"'","''") & "'"
Avatar billede znuggle.com Nybegynder
12. juni 2003 - 17:49 #7
Wee det virker!! Tak ;)
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