/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
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

Søg
Reklame
Statistik
Spørgsmål : 177554
Tips : 31968
Nyheder : 719565
Indlæg : 6408857
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste