On Sun, 29 Jun 2003 17:04:15 +0200, "Rune Thougaard"
<rune@vinperlen.dk> wrote:
>Vil du ikke nok lige lave et lille eksempel for mig... så jeg lige kan se
>hvordan hvilken række følge det skal skrives i....
Det kunne jeg sådan set godt, men jeg tror i virkligheden, at der hvor
det går galt er med at forstå, hvordan formularer virker, så prøv evt.
at tage et kig på:
<url:
http://www.html.dk/tutorials/asp/lektion11.asp>
Prøv at kigge koden grundigt igennem og dan dig et billede af, hvordan
data kommer fra formularen og videre til den næste side - og hvordan
de så fanges på denne næste side og evt. bruges som input til
viderebehandling til denne side.
Desuden skal man lige tage højde for, at der er forskellige datatyper
(tal, tekst, boolske osv.)
(Når du har gjort det, så:)
Hvis vi tager udgangspunkt i din side1.asp:
<url:
http://www.dalgaards.dk/shopen/side1.asp>
- eller rettere i den tidligere udgave med checkbox'e - så er en
checkbox jo en Boolsk værdi (den kan enten være on eller off og ikke
andet). Hvorimod din nuværende udgave (med type="text") jo kan
indeholde tekst af enhver slags.
Din side1.asp er der vist ikke noget i vejen med (hvis du vil bruge
mit eksempel, skal du lige rette tilbage til type="checkbox".) Fx:
<input type="checkbox" name="2001-1" value="true">
Når du trykker på Send-knappen, bliver data sendt til side2.asp - og
input fra form'en kan hentes med:
Request.Form("navnet_på_det_enkelte_felt") - i dette tilfælde altså
(hvis vi bruger dine "gamle" navne):
Request.Form("2001-1")
Request.Form("2001-3")
osv. indtil
Request.Form("2002-6")
Vi bruger disse input til at bestemme, om der skal udskrives eller ej.
Først laver vi 6 Boolsk'e variable - altså nogen som enten kan være
sande eller falske. Hvis vi får værdien "true" fra formularen, er det
fordi der er afkrydset - ellers vil den blot være Empty.
De 6 variable danner vi således:
If Request.Form("2001-1") = "true" Then
bln20011 = True
Else
bln20011 = False
End If
- bemærk: Der er ikke anførselstegn om True/False - det er ikke tekst,
men logiske værdier.
If Request.Form("2001-2") = "true" Then
bln20012 = True
Else
bln20012 = False
End If
- osv. indtil 2002-6
Disse 6 variable bruger vi så til at bestemme om der skal udskrives:
If bln20011 Then
Response.Write "1 fl. rødvin fra 2001"
End If
If bln20013 Then
Response.Write "3 fl. rødvin fra 2001"
End If
- osv. indtil:
If bln20026 Then
Response.Write "6 fl. rødvin fra 2002"
End If
Hvis vi til slut sætter det hele sammen, skulle det gerne blive noget
i retning af:
<%
' Først erklærer vi variablerne
Dim bln20011, bln20013, bln20016
Dim bln20021, bln20023, bln20026
' Så danner vi de boolske værdier
If Request.Form("2001-1") = "true" Then
bln20011 = True
Else
bln20011 = False
End If
If Request.Form("2001-3") = "true" Then
bln20013 = True
Else
bln20013 = False
End If
If Request.Form("2001-6") = "true" Then
bln20016 = True
Else
bln20016 = False
End If
If Request.Form("2002-1") = "true" Then
bln20021 = True
Else
bln20021 = False
End If
If Request.Form("2002-3") = "true" Then
bln20023 = True
Else
bln20023 = False
End If
If Request.Form("2002-6") = "true" Then
bln20026 = True
Else
bln20026 = False
End If
' Så laver vi betinget udskrivning:
If bln20011 Then
Response.Write "1 fl. rødvin fra 2001<br />" & vbcrlf
End If
If bln20013 Then
Response.Write "3 fl. rødvin fra 2001<br />" & vbcrlf
End If
If bln20016 Then
Response.Write "6 fl. rødvin fra 2001<br />" & vbcrlf
End If
If bln20021 Then
Response.Write "1 fl. rødvin fra 2002<br />" & vbcrlf
End If
If bln20023 Then
Response.Write "3 fl. rødvin fra 2002<br />" & vbcrlf
End If
If bln20026 Then
Response.Write "6 fl. rødvin fra 2002<br />" & vbcrlf
End If
%>
Efterskrift:
Nu vil den snu sikkert indvende: Hvorfor ikke lave det hele i én
smøre? - og samtidig spare alle variablerne - som fx:
If Request.Form("2001-1") = "true" Then
Response.Write "1 fl. rødvin fra 2001<br />" & vbcrlf
End If
eller:
If CBool(Request.Form("2001-1")) Then
Response.Write "1 fl. rødvin fra 2001<br />" & vbcrlf
End If
Det kunne man for så vidt også sagtens. Jeg har bare forsøgt at være
lidt ekstra "pædagogisk" ved at vise, at man ofte har behov for at
validere sit input. Eller man skal måske bruge sit input flere gange -
eller blot længere nede i scriptet. Og så er det rart at have dem i
nogle variable frem for igen og igen at skulle hente dem fra
Request.Form ...
Håber det gav lidt mere mening.
Hvis du vil bruge et tekstfelt til at skrive antal i (hvilket er meget
fornuftigt), så skal du lave en inputvalidering, som checker, at det
er et tal, der er skrevet og ikke et eller flere bogstaver.
En sikrere metode vil selvfølgelig være en select-box.
>end til videre mange tak for hjælpen...!
Velbekomme!
--
Jørn Andersen,
Brønshøj