Henning Smed Sørensen skrev:
> Når brugere tilføjer eller retter i databaserne har jeg på den
> side hvor ændringerne skrives til DB, en række If & ELSEIF
> sætninger for at kontrollere indholdet af formular feltet før
> der skrives til DB, brugeren sendes ved fejl til en side med
> oplysning om fejlen og en retur formular siden link.
Er det noget a la det her?
If felt1 = "" Then
' Håndter fejl i felt 1
ElseIf felt2 = "" Then
' Håndter fejl i felt 2
....
End if
> Er der er en smartere må at udføre denne kontrol på?
Ja. Ovenstående struktur finder kun én fejl ad gangen - og det kan
derfor være en langsommelig proces at submitte hvis man har flere
fejl.
En bedre mulighed er at bruge en variabel til at opsummere
eventuelle fejl:
Dim strError
strError = ""
If felt1 = "" Then
strError = strError & "Fejl i felt 1...<br>"
End If
If felt2 = "" Then
strError = strError & "Fejl i felt 2...<br>"
End If
....
' Tjek om der er fejl:
If strError = "" Then
' Ingen fejl - submit
Else
' Fejl - viderestil til fejlside, brug strError som forklaring
End If
> Kan jeg kontrollere værdien af et formular felt i formularen
> og aktive en PopUp ved mangler eller fejl,
Det kræver validering på klientsiden (hvis du ikke vil forsøge at
åbne en popop via body_onload - og få den blokeret af alle
anstændige browsere). Validering på klientsiden (med javascript) er
en udmærket ting, fordi det som regel går en del hurtigere end
serverbaseret validering, og man behøver ikke at tænke på at
gendanne formularen. Det kan dog aldrig stå alene, da klientbaseret
validering nemt kan omgås (fx ved at slå javascript fra).
> og evt. udskifte et enkelt anførselstegn med 2 enkelte
> anførselstegn før indholdet af formularen sendes til databasen?
Udskiftningen af anførselstegn skal til gengæld foregå på
serversiden - efter den normale validering af input. Hvis data
opfylder de betingelser du har sat for formularen, sendes det
videre til databasen efter at du har erstattet anførselstegn på
tekstværdierne.
> Når jeg kontrollerer en Email adresse bruger jeg
> "InSTR(Email,"@")", for at kontrollere om feltet indeholder "@
> og derefter "." men jeg kontrollerer ikke om "." er før eller
> efter "@", jeg kunne selvfølgelig finde "LEN" til "@" og
> derefter beregne antallet af karakterer fra højre til "@" for
> at søge efter ".", men hvis brugeren indtaster 2 gange "@" vil
> min kontrol ikke fungere.
Spørgsmålet er hvor præcist du vil matche mails. Med et regulært
udtryk (et regex) kan man lave ret præcise regler til at matche en
mailadresse - se fx siden her:
<
http://www.regular-expressions.info/email.html>
En hurtig måde at tjekke for @ og . på er ved at bruge split-
funktionen:
Dim mailParts, hostParts
' Del mailadressen efter @-tegnet
mailParts = split(email, "@")
If Ubound(mailParts) <> 1 Then
' Fejl - der er flere eller færre end 1 @-tegn i adressen
Else
' Del hostnavnet efter .
hostParts = split(mailParts(1), ".")
If Ubound(hostParts) = 0 Then
' Intet punktum i servernavnet
Else
' Evt. tjek på længden af sidste led
If Len(hostsParts(Ubound(hostsParts)) > 4 Then
' Ugyldig mailadresse (medmindre man har en
' foo@bar.museum-adresse)
Else
' Alt o.k.
End If
End If
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på
http://usenet.dk/netikette/citatteknik.html