/ 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 før fomular værdier skrives til~
Fra : Henning Smed Sørense~


Dato : 26-04-06 08:27

Hej,

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 der er en smartere må at udføre denne kontrol på?

Kan jeg kontrollere værdien af et formular felt i formularen og aktive en
PopUp ved mangler eller fejl, og evt. udskifte et enkelt anførselstegn med 2
enkelte anførselstegn før indholdet af formularen sendes til databasen?

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.

Jeg vil være taknemmelig hvis nogen i grupper har forslag eller links til
datavalidering.

M.v.h.
Henning




 
 
Jens Gyldenkærne Cla~ (26-04-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 26-04-06 09:19

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

Ukendt (27-04-2006)
Kommentar
Fra : Ukendt


Dato : 27-04-06 16:19

"Jens Gyldenkærne Clausen" <jens@gyros.invalid> wrote in message
news:Xns97B168F1CDB2Cjcdmfdk@gyrosmod.dtext.news.tele.dk...

> 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

Ja!

> 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


Jeg anvender dit forslag og har tilføjet en variabel som indeholder
formularens navn, så kan jeg bruge samme "fejlside" til alle formularer.
Her er koden:

' Check of FORM data before save to DB
Dim strError
strError = ""
Dim strForm
strForm = "New Incident Report"
IF LEN (request.form("IncidentDate")) < 10 OR
isNull(request.form("IncidentDate")) THEN
strError = strError & "Date as dd-mm-yyyy<br><br>"
END IF
IF LEN (request.form("IncidentTime")) < 5 OR
isNull(request.form("IncidentTime")) THEN
strError = strError & "Time as hh:mm<br><br>"
END IF
IF LEN (request.form("IncidentReported")) < 5 OR
isNull(request.form("IncidentReported")) THEN
strError = strError & "Incident Details<br><br>"
END IF
IF LEN (request.form("MonthlyRepType")) < 5 OR
isNull(request.form("MonthlyRepType")) THEN
strError = strError & "Select a Category<br><br>"
END IF
IF LEN (request.form("Status")) < 2 OR isNull(request.form("Status")) THEN
strError = strError & "Select a Status<br><br><br>"
END IF
IF (strError) <> "" Then
response.redirect ("formError.asp?fError=" & strError & "fName=" & strForm)
ELSE
response.write "Form OK<br>"
END IF

Jeg har et spørgsmål til koden:
Er det korrekt syntax at anvende IF & END IF uden ELSE ?

Mange tak for hjælpen
Henning



Ukendt (28-04-2006)
Kommentar
Fra : Ukendt


Dato : 28-04-06 08:39


"Henning Smed" <henning snabela smeds.dk> skrev i en meddelelse
news:4450e0e7$0$11172$d40e179e@nntp02.dk.telia.net...
> "Jens Gyldenkærne Clausen" <jens@gyros.invalid> wrote in message
> news:Xns97B168F1CDB2Cjcdmfdk@gyrosmod.dtext.news.tele.dk...
>
>> 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
>
> Ja!
>
>> 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
>
>
> Jeg anvender dit forslag og har tilføjet en variabel som indeholder
> formularens navn, så kan jeg bruge samme "fejlside" til alle formularer.
> Her er koden:
>
> ' Check of FORM data before save to DB
> Dim strError
> strError = ""
> Dim strForm
> strForm = "New Incident Report"
> IF LEN (request.form("IncidentDate")) < 10 OR
> isNull(request.form("IncidentDate")) THEN
> strError = strError & "Date as dd-mm-yyyy<br><br>"
> END IF
> IF LEN (request.form("IncidentTime")) < 5 OR
> isNull(request.form("IncidentTime")) THEN
> strError = strError & "Time as hh:mm<br><br>"
> END IF

Henning,

Du tjekker jo kun længden af dato og tid.
Hvad nu hvis jeg i tid skriver "abcdef"

Så er længden 5, men dataen er forkert !!!

Burde du ikke tjekke indholdet og ikke kun længden ?


Neuhafen


> IF LEN (request.form("IncidentReported")) < 5 OR
> isNull(request.form("IncidentReported")) THEN
> strError = strError & "Incident Details<br><br>"
> END IF
> IF LEN (request.form("MonthlyRepType")) < 5 OR
> isNull(request.form("MonthlyRepType")) THEN
> strError = strError & "Select a Category<br><br>"
> END IF
> IF LEN (request.form("Status")) < 2 OR isNull(request.form("Status"))
> THEN
> strError = strError & "Select a Status<br><br><br>"
> END IF
> IF (strError) <> "" Then
> response.redirect ("formError.asp?fError=" & strError & "fName=" &
> strForm)
> ELSE
> response.write "Form OK<br>"
> END IF
>
> Jeg har et spørgsmål til koden:
> Er det korrekt syntax at anvende IF & END IF uden ELSE ?
>
> Mange tak for hjælpen
> Henning
>



Henning Smed Sørense~ (28-04-2006)
Kommentar
Fra : Henning Smed Sørense~


Dato : 28-04-06 17:07


"Neuhafen" <neuhafen sNaBeL-A neuhafen dk> skrev i en meddelelse
news:4451c691$0$38716$edfadb0f@dread12.news.tele.dk...
> Du tjekker jo kun længden af dato og tid.
> Hvad nu hvis jeg i tid skriver "abcdef"
>
Jeg har et JavaScript på formularsiden som kun tillader tal og som
formaterer datoen som dd-mm-yyyy, men scriptet kontrollerer ikke om der er
en værdi i feltet.
Jeg arbejder på at skrive JavaScriptet om så det kontrollerer tiden og
formaterer som hh:mm.

Mvh
Henning



Jørn Andersen (29-04-2006)
Kommentar
Fra : Jørn Andersen


Dato : 29-04-06 07:23

On Fri, 28 Apr 2006 18:07:10 +0200, "Henning Smed Sørensen"
<henning@smeds.dk> wrote:

>"Neuhafen" <neuhafen sNaBeL-A neuhafen dk> skrev i en meddelelse
>news:4451c691$0$38716$edfadb0f@dread12.news.tele.dk...
>> Du tjekker jo kun længden af dato og tid.
>> Hvad nu hvis jeg i tid skriver "abcdef"
>>
>Jeg har et JavaScript på formularsiden som kun tillader tal og som
>formaterer datoen som dd-mm-yyyy, men scriptet kontrollerer ikke om der er
>en værdi i feltet.

Clientside JavaScript er en glimrende ting til at fange formular-fejl.
Det sparer serveren for arbejde og er hurtigere for brugeren.

Men sørg altid for at validere *alle* (rimelige) muligheder
serverside, da brugeren kan have slået JavaScript fra - eller bruger
en browser, der ikke understøtter det.

Så betragt JavaScript-valideringen som en service over for *brugeren*,
men serverside-validering som *din* garanti for, at du har valide
data.


Good luck!

--
Jørn Andersen,
Brønshøj

Jens Gyldenkærne Cla~ (27-04-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 27-04-06 23:18

Henning Smed skrev:

> Jeg har et spørgsmål til koden:
> Er det korrekt syntax at anvende IF & END IF uden ELSE ?

Ja. "Else"-delen er valgfri.
--
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

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

Månedens bedste
Årets bedste
Sidste års bedste