Avatar billede Slettet bruger
25. juni 2002 - 04:53 Der 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 ?

Sousekode

Conn.Execute("UPDATE Butikker SET " & _
    "ButikTitel = '" & Request("shoptitle") & "'," & _
    "ButikHOST = '" & Request("url") & "', " & _
    "ButikCVR = '" & Request("CVR") & "', " & _
    "ButikFirma = '" & Request("company") & "', " & _
    "ButikNavn = '" & Request("name") & "', " & _
    "ButikAdresse = '" & Request("address") & "', " & _
    "ButikPostnr = " & Request("zipcode") & ", " & _       
    "ButikBynavn = '" & Request("city") & "', " & _
    "ButikLand = '" & Request("country") & "', " & _
    "ButikTelefon = '" & Request("phone") & "', " & _
    "ButikTeleFax = '" & Request("fax") & "', " & _
    "ButikEmail = '" & Request("email") & "' " & _
    " WHERE ButikID = " & Session("ButikShopID") & "")

Avatar billede dk_akj Nybegynder
25. juni 2002 - 07:22 #1
Du kan gøre 2 ting.

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>

</head>
<body>
<h2>Form</h2><p>
<form name="checkform" action="test.html"
method="post" enctype="text/plain">
Navn: <input type="text" name="name"><br>
Alder: <input type="text" name="age" size="4"><br>
Kommentarer:<br>
<textarea name="remarks" cols="45" rows="10"></textarea><br>
<input type="button" value="check & submit" onClick="check()">
</form>

</body>
</html>


Løsning 2:

s_ButikTitel = Request("shoptitle")
if len(s_ButikTitel) = 0 then
  ' der er ikke indtastet noget
end if
osv.....


//akj
Avatar billede benson Nybegynder
25. juni 2002 - 07:41 #2
Gem denne kode som Validate.asp

<%
Dim errorMSG

validateform
If errorMSG<>"" Then errorFORM

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%>
   
    <INPUT TYPE="submit" VALUE="TILBAGE">
    </FORM>
    </BODY>
    </html>

    <%
    Response.End
End SUB


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
%>
Avatar billede benson Nybegynder
25. juni 2002 - 07:46 #3
I starten af din FORM asp side henter du lige alle værdierne til dine form felter :

felt1=server.HTMLencode(TRIM(request.Form("felt1")))
.
.
.
felt10=server.HTMLencode(TRIM(request.Form("felt10")))

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 !

Benson
Avatar billede benson Nybegynder
25. juni 2002 - 07:48 #4
Og så kommer det smarte. Hvis ikke dette felt må være tom skriver du
<input type="HIDDEN" name="felt1_REQ" Value="Du skal indtaste en værdi">

I felter med _REQ vil value blive vist på fejl siden.

Du kan altså have hver din fejlmeddelelse til hvert felt !!
Avatar billede dk_akj Nybegynder
25. juni 2002 - 07:49 #5
benson >> Det er f..... smart ;o)

//akj
Avatar billede sn0wflake Nybegynder
25. juni 2002 - 08:33 #6
Øøøhh ja! ;)

JavaScriptet kan gøres bedre. Den absolut bedste metode er at checke med JavaScript og ASP, hvis nu en brugers browser ikke understøtter JavaScript.
Avatar billede benson Nybegynder
25. juni 2002 - 08:41 #7
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.

Det kan jeg med validate.asp.
Avatar billede dk_akj Nybegynder
25. juni 2002 - 09:38 #8
Lige et lille tip til benson's code.
Man skal huske at navnene på de inputs man bruger skal være længere end 4 chars, ellers går det i grums.

//akj
Avatar billede benson Nybegynder
25. juni 2002 - 09:43 #9
Jepper ;-)
Avatar billede tmceu Praktikant
25. juni 2002 - 11:04 #10
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:

strShopTitle = Request("shoptitle")
strUrl = Request("url")
strCvr = Request("CVR")
o.s.v.

If strShopTitle = "" Then
strShopTitle = "''"
Else
strShopTitle = "'" & strShopTitle & "'"
End If

If strUrl = "" Then
strUrl = "''"
Else
strUrl = "'" & strUrl & "'"
End If

If strCvr = "" Then
strCvr = "''"
Else
strCvr = "'" & strCvr & "'"
End Ifo.s.v.

Conn.Execute("UPDATE Butikker SET " & _
    "ButikTitel = " & strShopTitle & "," & _
    "ButikHOST = " & strUrl & ", " & _
    "ButikCVR = " & strCvr & ", " & _
o.s.v.
Avatar billede benson Nybegynder
25. juni 2002 - 11:18 #11
tmceu> Joow deeet !! Sådan kunne man jo også opfatte spørgsmålet ;-) men det andet er da meget sjovere !
Avatar billede tmceu Praktikant
25. juni 2002 - 11:21 #12
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 :-)
Avatar billede tmceu Praktikant
25. juni 2002 - 11:23 #13
Jeg kan forresten ikke lade være med at tænke på den underlige serie på TV Danmark, hver gang jeg ser dit navn *S* Er inspirationen hentet derfra?
Avatar billede benson Nybegynder
25. juni 2002 - 11:29 #14
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 ?
Avatar billede tmceu Praktikant
25. juni 2002 - 11:35 #15
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.
Avatar billede benson Nybegynder
25. juni 2002 - 11:39 #16
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.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester