[ASP] forms submitten naar zelfde pagina.

Pagina: 1
Acties:

  • StarLite
  • Registratie: Januari 2000
  • Laatst online: 16-09 10:55

StarLite

'ON ERROR RESUME NEXT

Topicstarter
Deze code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<% If Request.form("user")="" Or Request.form("paswoord")="" Then %>

<form method="post" name="form" action="editprofile.asp?user=<% request.form("user") %>">
<table border="1" bordercolor="#000000" bgcolor="#015885" bordercolor="FFFFFF">
  <TR bgcolor="#037FB9"><TD bordercolor="FFFFFF">nickname:</TD><TD bordercolor="FFFFFF"> <input type="text" size="16" name="user" maxlength="16"></TD></TR>
  <TR bgcolor="#037FB9"><TD bordercolor="FFFFFF">password:</TD><TD bordercolor="FFFFFF"> <input type="password" size="16" name="paswoord" maxlength="16"></TD></TR>
  <TR bgcolor="#037FB9"><TD bordercolor="FFFFFF">&nbsp;</TD><TD bordercolor="FFFFFF"> <input type="submit" value="Submit"></TD></TR>
  <input type="hidden" name="puser" value="Request.form("user")">
</table>
</form>
<% else %>

<% If Request("user")="" Or Request("password")="" Or Request("email")="" Then 
%> user = <% Trim(Request("user")) %> : <% Request("user") %> : <% =puser %> <%
   Set connect = Server.Createobject("ADODB.connection")
   connect.open "msgb"
   Set board = Server.Createobject("ADODB.Recordset")
   board.open "SELECT password FROM users WHERE Username='" & Request("puser") & "'",Connect,AdOpenDynamic,AdLockOptimistic
   paswoord = board("password") 
   IF paswoord=Request("password") Then

on error resume next

pusername = Request.form("user")
Set connect = Server.Createobject("adodb.connection")
Connect.open "msgb"
query = "Select * from users where username='" & pusername &"'"
Set readprefs = Connect.execute(query) %>

<form method="post" action="editprofile.asp?user=<% pusername %>">
<table border="1" bordercolor="#000000" bgcolor="#015885" bordercolor="FFFFFF">
  <TR bgcolor="#037FB9"><TD bordercolor="FFFFFF">nickname:</TD><TD bordercolor="FFFFFF"> <% readprefs("Username") %></TD></TR>
  <TR bgcolor="#037FB9"><TD bordercolor="FFFFFF">password:</TD><TD bordercolor="FFFFFF"> <input type="password" size="16" name="password" maxlength="16">*</TD></TR>
  <TR bgcolor="#037FB9"><TD bordercolor="FFFFFF">e-m@il:</TD><TD bordercolor="FFFFFF"> <input type="text" size="32" name="email" maxlength="48" value="<% readprefs("email") %>"></TD></TR>
  <TR bgcolor="#037FB9"><TD bordercolor="FFFFFF">First name</TD><TD bordercolor="FFFFFF"> <input type="text" size="32" name="fname" maxlength="32" value="<% readprefs("fname") %>"></TD></TR>
  <TR bgcolor="#037FB9"><TD bordercolor="FFFFFF">Last name</TD><TD bordercolor="FFFFFF"> <input type="text" size="32" name="lname" maxlength="32" value="<% readprefs("lname") %>"></TD></TR>
  <TR bgcolor="#037FB9"><TD bordercolor="FFFFFF">ICQ-number</TD><TD bordercolor="FFFFFF"> <input type="number" size="16" name="IcqNr" maxlength="12" value="<% readprefs("Icqnr") %>"></TD></TR>
  <TR bgcolor="#037FB9"><TD bordercolor="FFFFFF">MSN-adress</TD><TD bordercolor="FFFFFF"> <input type="text" size="32" name="MsnAdress" maxlength="48" value="<% readprefs("MSNadress") %>"></TD></TR>
  <TR bgcolor="#037FB9"><TD bordercolor="FFFFFF">Homepage:</TD><TD bordercolor="FFFFFF"> <input type="text" size="32" name="homepage" maxlength="96" value="<% readprefs("Homepage") %>"></TD></TR>
  <TR bgcolor="#037FB9"><TD bordercolor="FFFFFF">Signature</TD><TD bordercolor="FFFFFF"> <input type="text" size="64" name="signature" maxlength="225" value="<% readprefs("Signature") %>"></TD></TR>
  <TR bgcolor="#037FB9"><TD bordercolor="FFFFFF">SubTitle</TD><TD bordercolor="FFFFFF"> <input type="text" size="32" name="SubTitle" maxlength="24" value="<% readprefs("Subtitle") %>"></TD></TR>
  <TR bgcolor="#037FB9"><TD bordercolor="FFFFFF">UserIcon</TD><TD bordercolor="FFFFFF"> <input type="text" size="32" name="UserIcon" maxlength="64" value="<% readprefs("usericon") %>"></TD></TR>
  <TR bgcolor="#037FB9"><TD bordercolor="FFFFFF">&nbsp;</TD><TD bordercolor="FFFFFF"> <input type="submit" value="Submit"> *=Required field</TD></TR>
</table>
</form>

geeft deze error:
code:
1
2
3
4
5
6
user = : : 
ADODB.Field error '800a0bcd' 

Either BOF or EOF is True, or the current record has been deleted; the operation requested by the application requires a current record. 

/msgb/editprofile.asp, line 48

Nukomt dit doordat hij de username etc niet wil doorgeven van het eerste form naar de rest v/d pagina.
Wat doe ik hier fout¿

tyrips, tywreps, tiewreps, tiereps, tie raps, ripties, taiwraps, kabelbindbandjes » Tie Wraps
\o/


Verwijderd

Wat doe je fout? Teveel om op te noemen...

- bordercolor="FFFFFF"
- on error resume next, zonder error afhandeling
- inconsequent gebruik van hoofdletters/kleine letters
- Request("puser") (of Request.Querystring of Request.Form)
- vreemd/inconsequent inspringen bij <% en %>
- enz, enz...

Sorry dat ik het zeg, maar je code is niet echt netjes te noemen. Verder niet lullig bedoeld, maar kijk eens naar wat sitse met coding tips (microsoft heeft bijvoorbeeld een workshop gedeelte waar veel ASP tips te vinden zijn)

Succes

  • Banpei
  • Registratie: Juli 2001
  • Laatst online: 16-09 08:48
Ehm, stomme vraag, maar waarom zet je zelf de informatie die je wilt hebben in je action-tag? Maarja, dat zal wel weer aan mij liggen... :?

Ik zie dat je Username en pwd wil ophalen uit de DB, maar in je if-statement hieronder staat de fout:

if request("user")="" en dan een request naar de user doen... Lijkt me dat hier een NOT tussen hoort... ;)

Verwijderd

Di's inderdaad wel dramatisch slechte ASP code zeg.

Anyway hier gaat het fout:
code:
1
paswoord = board("password")

Als er geen records zitten in de recordset zitten, mag je niet zomaar de recordset gaan uitlezen.

Bij het opbouwen van de query gebruik je 'puser', maar die zal nooit gevuld zijn zoals jij nu je pagina opbouwt, dus zal de query nooit records returnen. Denk daar dus nog maar eens overna.

Succes :)

Verwijderd

De 'fout' zit volgens mij in de volgende regel:

board.open "SELECT password FROM users WHERE Username='" & Request("puser") & "'",Connect,AdOpenDynamic,AdLockOptimistic

Request("puser") retourneert namelijk niks, want je gebruikt in je formulier de waarde user ipv puser.. Waar je wel op zou moeten letten is dat je recordset dus leeg zou kunnen zijn omdat de user niet bestaat. Hier zou je op kunnen/moeten checken door na het open statement te checken of zowel board.eof als board.bof true zijn. Dus:
code:
1
2
3
4
5
if(not board.eof() and not board.bof()) then
  Response.write("Resultaten")
else
  Response.write("Geen gebruiker gevonden")
end if

edit:

Darn, zo staan d'r geen replies, zo staan d'r 3 waarvan 1 identiek aan die van mij .. Nouja, ik ben 't dus eens met MrX :)

  • StarLite
  • Registratie: Januari 2000
  • Laatst online: 16-09 10:55

StarLite

'ON ERROR RESUME NEXT

Topicstarter
De code komt van meerdere pagina's, ff ge-copy and gepaste.

Ik denk dat ik gewoon de hele pagina van scratch opnieuw ga opbouwen dan.

tyrips, tywreps, tiewreps, tiereps, tie raps, ripties, taiwraps, kabelbindbandjes » Tie Wraps
\o/


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 12:02

Crazy D

I think we should take a look.

Op maandag 17 september 2001 15:35 schreef -=!ME!=- het volgende:
De code komt van meerdere pagina's, ff ge-copy and gepaste.

Ik denk dat ik gewoon de hele pagina van scratch opnieuw ga opbouwen dan.
Dat lijkt me een goed plan ;)

Wat ik zelf prettig vind werken is een opbouw als dit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Dim bToonForm
bToonForm = True
' check of form is gepost
If Request.ServerVariables("REQUEST_METHOD") = "POST" Then
    ' controleer waardes
    If waardes_zijn_goed Then
      bToonForm = False
    End If
End If

If bToonForm Then
    ' toon de form hier
Else
    ' doe iets anders
End if

Uiteraard wel heel erg algemeen. Als het om een login venster gaat, redirect ik meestal als de waardes goed zijn. Maar het gaat een beetje om het idee :)
En zo veel mogelijk asp en html scheiden, is een stuk makkelijker om te zien of er nou een fout in de code zit, of in de html. En als iemand het idee heeft de hele look te veranderen, hoef je niet alle code door te lopen om te wijzigen...

Exact expert nodig?

Pagina: 1