webForumDet fria alternativet

formulär + errorhantering

4 svar · 249 visningar · startad av doggelito

doggelitoMedlem sedan juni 20003 076 inlägg
#1

Har en aspsida med ett formulär och ett antal fält av olika slag på.
När besökaren sedan fyller i allt och skickas till insertsidan så kollar koden att samtliga fält är korrekt ifylda, är allt ok så körs inserten och man länkas vidare.
Men skriver man något fel eller hoppar över något fält så skickas man tillbaka till formulärsidan och man får rätta till felen.

Nu till problemet:
För att man inte ska behöva skriva om samtliga fält igen så skapas det två session för varje fält, ett för texten, ett för vilket fält, typ:

Session("textfältet") = "massa text"
session("err_textfältet") = "X"

när man då skickats tillbaka så står det ett 'X' brevid det textfält som är fel, typ:

<tr>
<td><%=Session("err_textfältet")%></td>
<td><input type="text" name="textfältet" value="<%=Session("textfältet")%>"></td>
</tr>

hajjar ni?, har man då ett tio-tal fält på sidan + att man har flera olika sidor så blir det en satans massa sessions!
Finns det något smartare sätt?
Nån som kan ge ett litet exempel på hur ni brukar göra, så blir ja gla!

------------------
Motto: Flest If-taggar vinner!

Mika3lMedlem sedan nov. 20018 492 inlägg
#2

Varför inte skriva ut lite text och sedan göra en länk?

If Request.Form("bla") = "" Then
Response.Write"Du måste fylla i bla<br>"
Response.Write"<a href=javascript:history.go(-1)>Tillbaka</a>"
Else
Insertkoden...
End If

Den enda nackdelen är att om du har ett fält av typen password(<input type="password"> ) så kommer detta fält att bli tomt när du klickar tillbaka, men det är väl inte så jobbigt att fylla i igen?

Annars kan du ju göra det med javascript också.

<html>
<head>
<title>Titel</title>
<script language="javascript">
function kollaform()   {
var bla = document.form.bla.value;
if(bla.length == 0) {
alert("Du måste fylla i fältet bla!"); Return False;
}
}
</script>
</head>
<body>

<form name="form" method="post" action="sida.asp" onSubmit="return kollaform()">
Bla: <input type="text" name="bla"><br>
<input type="submit" value="Skicka">
</form>

/Mika3l

RED: Stavfel...

------------------
Det stora datatestet:

Ok, då börjar vi!
För att börja testet tryck alt+F4.

MK-Studios v2!

[Redigerat av Mika3l den 08 feb 2002]

hannaMedlem sedan jan. 200262 inlägg
#3

det enklaste sättet är väl att ha all kod på samma sida i stället för att skicka till en annan sida och göra insättningen, tror jag.

annars så kan du skicka med värdena tillbaka till ursprungssidan igen:

VarQString = "?textfält1 = " & FältVärde &_
"&textfält2 = " & FältVärde2 &_
"&textfält3 = " & FältVärde3

Response.redirect "sidan.asp" & VarQString

på ursprungssidan kollar du av med:

<%
if LenTrim(request.queryString("textfält1") > 0 then
%>
<td>X</td>
<%
else
%>
<td></td>
<%
end if
%>
<td><input type=text value="<%Request.queryString("textfält1")%>">

hoppas att detta var till någon hjälp

doggelitoMedlem sedan juni 20003 076 inlägg
#4

hmm, tack för svaren men ingen av dessa passar riktigt in.
på det första förslaget så tappar man ju all text om man råkar uppdatera sidan och det är inte bra.
på det andra får man en för lång querystring, den får väl var max 255 tecken om jag inte minns helt fel.

hur gör ni andra?
någon sorts errorhantering måste väl de flesta hålla på med, eller?

------------------
Motto: Flest If-taggar vinner!

PatrikBMedlem sedan mars 20002 836 inlägg
#5

Javascript på klientsidan i kombination med kolla på serversidan är det bästa.

På server sidan kör jag ngt liknande detta, har utvecklat det lite mer, men eftersom denna kod fanns här och funkar rätt smärtfritt så lägger jag med den länken oxå http://cgi.webforum.nu/wf/Forum11/HTML/003302.html

Den postar formuläret till samma sida.

cya,
PatrikB

------------------
-=* IF there is a wrong way to do something, then someone will do it *=-

127 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)