|
| Validering af formular Fra : MyMail |
Dato : 22-08-01 17:16 |
|
Hej!
Jeg prøver at lave validering af en formular, men jeg har problemer med at
få nogle af felterne til at virke. De felter, som blot ikke må være tomme af
hensyn til databasen, har jeg ingen problemer med, der ser (en del af) koden
ca. sådan ud
If len(Form_fornavn)=0 Then
Validated_form = False
End if
Jeg skal validere et datofelt, hvor folk skal indtaste deres fødselsdato. De
skal være over 45 år for at kunne benytte servicen. I databasen er feltet
Dato/klokkeslet format. Jeg kan ikke validere dette med ovenstående
True/False variabel - eller også har jeg bare syntaksen helt forkert?
Nogen forslag? ...... Jeg har også et problem mere:
Jeg vil gerne have, at man får besked tilbage om, hvad det er, man mangler
at udfylde i formularen. Indtil videre kan jeg kun få en linje frem, der er
fælles for hele formularen. Men det er jo ikke videre sigende for folk, at
de har udfyldt noget forkert, hvis ikke de bliver fortalt, hvad der er galt.
Koden ser ca. sådan ud:
If Validated_Form = False Then
bla, bla, du har ikke udfyldt formularen korrekt.
Er der nogen der ved, hvordan man laver en fælles side, der returnerer alle
de felter, hvor dataene ikke er validerede?
På forhånd tak for alle svar - jeg har brugt flere dage på ovenstående og
sidder nu fuldstændig fast!
Mvh.
Karina
| |
Anders Holbøll (23-08-2001)
| Kommentar Fra : Anders Holbøll |
Dato : 23-08-01 10:32 |
|
MyMail wrote:
>
> Jeg skal validere et datofelt, hvor folk skal indtaste deres
> fødselsdato. De skal være over 45 år for at kunne benytte servicen.
> I databasen er feltet Dato/klokkeslet format.
Så skal du jo beslutte dig for hvilket format, brugerne skal indtaste
datoen i og så lave en funktion, som kan parse dette (og huske at
fortælle brugerne, hvordan de skal skrive datoen). F.eks. formatet er
"dd/mm/yyyy":
foedselsdag = StrToDate(Request("foedselsdag"), "")
If (foedselsdag = "") Then
Response.Write "Nej nej nej, du skal skrive en dato!"
ElseIf (DateDiff("y", foedselsdag, Now) <= 45) Then
Response.Write "Din årsunge!"
End If
Function StrToDate(ByVal Value, ByVal Default)
Dim a
Value = Replace("" & Value, "/", " ")
Value = Replace(Value, "-", " ")
Value = Replace(Value, ".", " ")
Value = Replace(Value, ",", " ")
Value = Trim(Value)
Do While (InStr(Value, " ") > 0)
Value = Replace(Value, " ", " ")
Loop
a = Split(Value, " ")
If Not (UBound(a) = 2) Then
StrToDate = Default
Else
If Not IsNumeric(a(0)) Or _
Not IsNumeric(a(1)) Or _
Not IsNumeric(a(2)) Then
StrToDate = Default
If CLng(a(0))<1 Or CLng(a(0))>31 Or _
CLng(a(1))<1 Or CLng(a(1))>12 Or _
CLng(a(2))<100 Or CLng(a(2))>2200 Then
StrToDate = Default
Else
StrToDate = DateSerial(CLng(a(2)), CLng(a(1)), CLng(a(0)))
End If
End If
End Function
> Jeg vil gerne have, at man får besked tilbage om, hvad det er, man
> mangler at udfylde i formularen.
Jeg plejer at lave det ca. sådan:
Dim ErrorObj
If Request("commit") = "" Then
Call ShowForm
Else
Call ShowFormCommit
End If
Sub ShowForm
Dim hagaf, kulmut
hagaf = Trim(Request("hagaf"))
kulmut = Trim(Request("kulmut"))
'-- Her ville vi nok checke om der allerede ligger noget i
'-- databasen og hente det ud, hvis der gør
Response.Write "<form action=""bla.asp"">"
Response.Write " <input type=hidden name=commit value=1>"
Response.Write GetError("hagaf") & _
"<input type=text name=hagaf " & _
"value=""" & Server.HtmlEncode(hagaf) & """><br>"
Response.Write GetError("kulmut") & _
"<input type=text name=kulmut " & _
"value=""" & Server.HtmlEncode(kulmut) & """><br>"
Response.Write " <input type=submit value=""Afsted med sig!"">"
Response.Write "</form>"
End Sub
Sub ShowFormCommit
Dim hagaf, kulmut
hagaf = Trim(Request("hagaf"))
kulmut = Trim(Request("kulmut"))
If (hagaf = "") Then
Call SetError("hagaf", "Feltet må ikke være tomt")
ElseIf (InStr(hagaf, "e") = 0) Then
Call SetError("hagaf", "Feltet skal indeholde mindst et e")
End If
If (kulmut = "daska") Then
Call SetError("kulmut", "Feltet må ikke være daska")
End If
If IsObject(ErrorObj) Then
Call ShowForm
Else
'-- Put i databasen
Response.Redirect "hovedmenu.asp"
End If
End Sub
Sub SetError(Field, Value)
If Not IsObject(ErrorObj) Then
Set ErrorObj = Server.CreateObject("Scripting.Dictionary")
End If
ErrorObj.Item(Field) = ErrorObj.Item(Field) & Value & "<br>"
End Sub
Sub GetError(Field)
If IsObject(ErrorObj) Then
If ErrorObj.Exists(Field) Then
GetError = _
"<font color=#cc0000>" & ErrorObj.Item(Field) & "</font>"
End If
End If
End Sub
--
Anders
| |
|
|