25. juni 2002 - 04:53Der er
15 kommentarer og 1 løsning
Hvad gøre jeg ? "Haster"
Jeg er ved at lave en shop. og der er det meninge at man skal kunde rette sine oplysninger og det kan man næste også problemme er bare at man ikke må lade et felt stå tomt. Hvordan kommer jeg uden om det ?
1: checke med javascript inden du submitter. 2: checke om dine variabler <> "" inden du gemmer dem i databasen.
Jeg vil foretrække løsning 1: Her er et eksempel:
<html> <head> <title>Test af input</title>
<script language="JavaScript"> <!-- skjul... function check() { // er der tome felter if (document.checkform.name.value == "") { // jeps - alert + setfocus alert("You forgot to fill in your name."); document.checkform.name.focus(); return false; } else if (document.checkform.age.value == "") { // ingen alder ?? - alert + setfocus. alert("You forgot to fill in your age."); document.checkform.age.focus(); return false; } else if (document.checkform.remarks.value == "") { if (confirm("Har du virkeligt ingen kommentarer ?? Fortsæt uden ??") == true) { // næh der var ingen document.checkform.remarks.value = "I have no remarks."; document.checkform.submit(); } else { // jo der var en kommentar document.checkform.remarks.focus(); return false; } } else { // alt ok ?? så submit document.checkform.submit(); } } // vis... --> </script>
SUB validateform DIM fieldattrip, fieldname For each x in request.form fieldattrip=UCASE(RIGHT(x,4)) fieldname=LEFT(x,LEN(x)-4)
if fieldattrip="_REQ" AND Request.form(fieldname)="" then errorMSG=errorMSG & " - " & Request.form(x) & "<p>" end if
if fieldattrip="_VAL" AND Request.form(fieldname)="" then Select Case UCASE(Request.form(x)) CASE "NUMBER" if not isNumeric(Request.form(fieldname)) Then errorMSG=errorMSG & " - " & fieldname & " - Skal være et tal <p>" end if CASE "DATE" if not isDATE(Request.form(fieldname)) Then errorMSG=errorMSG & " - " & fieldname & " - Skal være en dato <p>" end if CASE "VALUTA" if not isNumeric(Request.form(fieldname)) Then errorMSG=errorMSG & " - " & fieldname & " - Skal være et beløb <p>" end if End select end if Next End sub
SUB errorFORM %> <html> <HEAD> <TITLE>Fejl Side</TITLE> </HEAD> <BODY> <b>Der var et problem med din indtastning af oplysninger:</b> <BLOCKQUOTE> <%=errorMSG%> </BLOCKQUOTE> <FORM METHOD=POST ACTION="<%=Request("formscript")%>"> <%formFields%>
SUB formFields Dim x, fieldattrip For each x in request.form fieldattrip=UCASE(RIGHT(x,4)) fieldname=LEFT(x, LEN(x)-4)
if fieldattrip<>"_REQ" AND fieldattrip<>"_VAL" then %> <input name="<%=x%>" type="HIDDEN" value="<%=server.HTMLencode(request.form(x))%>"> <% end if Next End SUB %>
Og indsætter værdierne i formen : <input type="text" name="felt1" value="<%=felt1%>" size="30" maxlength="10" TABINDEX="1">
Og så kommer det smarte. Hvis ikke dette felt må være tom skriver du <input type="HIDDEN" name="felt1_REQ" > og hvis det skal være et nummer <input type="HIDDEN" name="felt1_VAL" value="number" >
Så skulle du være færdig med din FORM ASP side.
På den side hvor du sender data laver du en inklude:
<!--#Include file="validateform.asp"-->
Så går resten som en leg.
Hvis betingelserne ikke er opfyldt, listes de steder hvor der fejles, samt en knap der leder tilbage til indtastningen !
dk_akj> Tak for det. Men jeg må jo erkende at jeg ikke har opfundet systemet.... selvom...nej. Eksemplet er hentet fra ASP 2.0 Unleashed.
Sn0wflake > Efter min overbevisning er det her nemmere. Du skal ikke bekymre dig om hvilken navngivning du har valgt. Det er du jo nød til ved JavaScript eks. document.checkform.name.value. Du kan altså ikke genbruge scriptet uden at skulle rette i det.
Spørgsmålet kunne jo også opfattes derhen, at vedkommende gerne vil have at man kan lade et felt stå tomt og ikke blot tvinge brugerne til at udfylde noget :-)
Først og fremmest kræver dette, at du tillader nul værdier på de pågældende felter i databasen.
Du kan opbygge et dynamisk SQL statement på denne måde:
Uanset hvad, vil det altid være en god ide at lave en server-side validering af formularer, så vedkommende har da fået noget for pengene, øhh pointente :-)
tmceu> Der må du lige opdatere mig, Jeg har brugt det nickname i ret lang tid, og den eneste serie jeg kan huske noget med en benson er tilbage i de gode gamle SOAP tider. Men jeg har ikke hentet det derfra ! ;-) Jeg er bare lidt benson agtig, men det må være en anden benson ?? Fill me in ?
Se med i aften/nat kl. 02:05 på TvDanmark 2. Meget kort fortalt, er Benson butler for (mener det er) en politiker og det er selvfølgelig ham der styrer verden. Mener også at den er fra 70'erne.
Nåår ja ! Så er han jo ikke fra SOAP !! For det er jo ham jeg troede der var med i SOAP! Men jeg mener ikke det er fra ham, men man ved jo aldrig ! ;-) EOF.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.