/ 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
Aflæse indtastninger i form, hvordan?
Fra : Stig Holmberg


Dato : 04-01-04 22:22

Jeg prøver at aflæse brugerens indtastninger i en alm. html form der sender
til en modtagende asp side med nedenstående indhold:

<%
response.write "Dine indkøb: <br />"
dim kontrol
for each kontrol in request.Form
response.write "Indtastet i " & kontrol
response.write ": "
response.write request.form.item(kontrol)
response.write "<br>"
next
%>

Men det resulterer i at alle felter bliver medtaget, også submit-knappen,
tomme felter etc., og det er ikke i den rigtige rækkefølge.

Hvordan udelukker man tomme felter?
Hvordan udelukker man uønskede felter som f.eks. submit-knappen?
Hvordan bestemmer man sorterings rækkefølgen?

Jeg har på fornemmelsen at dette ikke er den bedste/nemmeste måde at gøre
det på?

Det er til en ret lille online biks med ca. 50 varer i alt, og ovenstående
skal bruges til at sende en bekræftigelses e-mail til kunden med en oversigt
over de varer der er købt og deres pris.

Mvh. Stig


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.516 / Virus Database: 313 - Release Date: 01-09-2003



 
 
Jens Gyldenkærne Cla~ (04-01-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 04-01-04 22:37

Stig Holmberg skrev:

> Hvordan udelukker man tomme felter?


If Trim([requestværdi] & "") = "" Then
   ' udeluk feltet
End If

> Hvordan udelukker man uønskede felter som f.eks.
> submit-knappen?

Ved fx at give dem et navn der kan filtreres på:

If left(kontrol.name,3) = "btn" Then
   ' udeluk feltet
End If

Hvordan bestemmer man sorterings rækkefølgen?

Læg alle felter i et array og sorter det. Du kan så navngive dine
formfelter så den ønskede rækkefølge svarer til en alfabetisk
sortering.
--
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

Stig Holmberg (05-01-2004)
Kommentar
Fra : Stig Holmberg


Dato : 05-01-04 01:17

Hej, tak for svaret

Jeg kan ikke finde ud af at implementere din kode i det bestående loop,
nedenstående virker ialt fald ikke. Har også prøvet at skrive "next" inde i
if sætningen, men det virker heller ikke.

<%
response.write "Dine indkøb: <br />"
dim kontrol
for each kontrol in request.Form
If left(kontrol.name,3) = "btn" Then
response.write ""
else
response.write "Indtastet i " & kontrol
response.write ": "
response.write request.form.item(kontrol)
response.write "<br>"
End If
next
%>

Mvh. Stig


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.558 / Virus Database: 350 - Release Date: 02-01-2004



Jens Gyldenkærne Cla~ (05-01-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 05-01-04 01:32

Stig Holmberg skrev:

> Hej, tak for svaret

Hej - hvem svarer du og hvad svarer du på? (hint, læs min
signatur).

> Jeg kan ikke finde ud af at implementere din kode i det
> bestående loop, nedenstående virker ialt fald ikke.

Hvordan virker det ikke? Får du asp-fejl eller blot et forkert
resultat? Læs gerne <http://asp-faq.dk/article/?id=41>.

> If left(kontrol.name,3) = "btn" Then

Det er muligt at .name ikke skal med her. For at ovenstående tjek
skal virke, skal alle dine knapper mv. begynde med btn - fx <input
type="submit" name="btnSubmit" value="Send" />.
--
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

Torben Brandt (05-01-2004)
Kommentar
Fra : Torben Brandt


Dato : 05-01-04 01:45

Jens Gyldenkærne Clausen skrev:
>> If left(kontrol.name,3) = "btn" Then
>
> Det er muligt at .name ikke skal med her. For at ovenstående tjek
> skal virke, skal alle dine knapper mv. begynde med btn - fx <input
> type="submit" name="btnSubmit" value="Send" />.

Man kan også bare lade være med at sætte name-attributten på knapperne,
det er alligevel sjældent der er nødvendigt (ellers kan man bruge
id-attributten). Så bliver de ikke medsendt i formularen.
Ovenstående ville blive:
<input type="submit" value="Send" />

mvh Torben


Stig Holmberg (05-01-2004)
Kommentar
Fra : Stig Holmberg


Dato : 05-01-04 02:11

Torben Brandt wrote:

> Man kan også bare lade være med at sætte name-attributten på knapperne,
> det er alligevel sjældent der er nødvendigt (ellers kan man bruge
> id-attributten). Så bliver de ikke medsendt i formularen.
> Ovenstående ville blive:
> <input type="submit" value="Send" />
>
> mvh Torben

Ja, sørme ja det virker også!.

Sjovt nok har jeg en ekstra knap på min side kaldet "Beregn" den har ingen
action tilknyttet, men et navn "Beregn" og den kommer ikke med.

<input type="button" name="Beregn" value="Beregn" />

Mvh. Stig


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.558 / Virus Database: 350 - Release Date: 02-01-2004



Stig Holmberg (05-01-2004)
Kommentar
Fra : Stig Holmberg


Dato : 05-01-04 01:58

Jens Gyldenkærne Clausen wrote:

Hej - hvem svarer du og hvad svarer du på? (hint, læs min
> signatur).

Prøvede på at være økonomisk , jo det er dit svar jeg svarer på, kan
nogengange være svært lige at finde ud af hvor man skal skære.

> Hvordan virker det ikke? Får du asp-fejl eller blot et forkert
> resultat? Læs gerne <http://asp-faq.dk/article/?id=41>.

Der kommer denne fejl:

Error Type:
Microsoft VBScript runtime (0x800A01A8)
Object required: 'hf1'
/modtag.asp, line 16

Som nok kun giver mening hvis i ser det sendende html dokument, og det har
jeg postet i mit svar til Torben Brandt.


> > If left(kontrol.name,3) = "btn" Then
>
> Det er muligt at .name ikke skal med her. For at ovenstående tjek
> skal virke, skal alle dine knapper mv. begynde med btn - fx <input
> type="submit" name="btnSubmit" value="Send" />.
> --

Bingo! .name skal ikke med, så bliver submit-knappen korrekt filtreret fra,
ingen fejlmeddelelser.

Nu vil jeg prøve at implementere det øvrige af din kode, forslag velkomne


Mvh. Stig Holmberg


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.558 / Virus Database: 350 - Release Date: 02-01-2004



Stig Holmberg (05-01-2004)
Kommentar
Fra : Stig Holmberg


Dato : 05-01-04 09:59

Jens Gyldenkærne Clausen wrote:

> Hvordan bestemmer man sorterings rækkefølgen?
>
> Læg alle felter i et array og sorter det. Du kan så navngive dine
> formfelter så den ønskede rækkefølge svarer til en alfabetisk
> sortering.

Nu har jeg fået resten til at virke, undtagen det med sorteringen, kan du
kort vise mig hvordan jeg får anbragt dataerne i et array?

Mvh. Stig Holmberg


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.558 / Virus Database: 350 - Release Date: 02-01-2004



Torben Brandt (05-01-2004)
Kommentar
Fra : Torben Brandt


Dato : 05-01-04 01:23

Stig Holmberg skrev:
> Jeg prøver at aflæse brugerens indtastninger i en alm. html form der sender
> til en modtagende asp side med nedenstående indhold:
>
> <%
> response.write "Dine indkøb: <br />"
> dim kontrol
> for each kontrol in request.Form
> response.write "Indtastet i " & kontrol
> response.write ": "
> response.write request.form.item(kontrol)
> response.write "<br>"
> next
> %>
>
> Jeg har på fornemmelsen at dette ikke er den bedste/nemmeste måde at gøre
> det på?

Kan vi ikke få lov at se hvordan din form er konstrueret. Det er måske
nemmere at løse/forstå hvis vi kan se konkret hvordan det ser ud.

mvh Torben


Stig Holmberg (05-01-2004)
Kommentar
Fra : Stig Holmberg


Dato : 05-01-04 01:43

Torben Brandt wrote:

> Kan vi ikke få lov at se hvordan din form er konstrueret. Det er måske
> nemmere at løse/forstå hvis vi kan se konkret hvordan det ser ud.
>
> mvh Torben


Hej

Bestemt, her er den.

NB: JavaScriptet (i toppen og omkring felterne) bruges til at lægge priserne
på varernes pris sammen, og det virker fint nok. Jeg går ud fra at det er
nødvendigt at bruge JS til lige denne funktion da asp jo kræver at siden
bliver postet til serveren. Men det burde ikke genere asp-koden på den
modtagende side.

De 3 skjulte (hidden) felter bruges til at overføre navnet på varerne.

Mvh. Stig


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script language="JavaScript">
<!--
function beregningTotal () {
var sum1 = 0;
var sum2 = 0;
var sum3 = 0;

sum1=(25 * document.bestilling.vare1.value);
document.bestilling.vare1_total.value=sum1;
sum2=(50 * document.bestilling.vare2.value);
document.bestilling.vare2_total.value=sum2;
sum3=(75 * document.bestilling.vare3.value);
document.bestilling.vare3_total.value=sum3;
document.bestilling.totalsum.value = sum1+sum2+sum3;
}
//-->
</script>
</head>

<body>
<form name="bestilling" id="bestilling" method="post" action="modtag.asp">
<table width="400" border="0" cellpadding="3" cellspacing="0">
<tr>
<td colspan="2"><input name="hf1" type="hidden" id="hf1" value="Vare1"
/>
Vare 1</td>
</tr>
<tr>
<td>&nbsp;</td>
<td width="215" valign="top">Beskrivelse af produktet.</td>
</tr>
<tr>
<td nowrap="nowrap">Jeg bestiller:
<input name="vare1" type="text" id="vare1" size="3" maxlength="3"
onChange="beregningTotal();" />
stk. &aacute; kr. 25.- </td>
<td align="right" nowrap="nowrap"> Ialt kr.
<input name="vare1_total" type="text" id="vare1_total" size="4"
maxlength="4" onChange="beregningTotal();" /></td>
</tr>
<tr>
<td colspan="2" nowrap="nowrap">&nbsp;</td>
</tr>
<tr>
<td colspan="2"><input name="hf2" type="hidden" id="hf2" value="Vare2"
/>
Vare 2</td>
</tr>
<tr>
<td>&nbsp;</td>
<td valign="top">Beskrivelse af produktet.</td>
</tr>
<tr>
<td>Jeg bestiller:
<input name="vare2" type="text" id="vare2" size="3" maxlength="3"
onChange="beregningTotal();" />
stk. &aacute; kr. 50.- </td>
<td align="right">Ialt kr.
<input name="vare2_total" type="text" id="duftstof2_total2" size="4"
maxlength="4" onchange="beregningTotal();" /></td>
</tr>
<tr>
<td colspan="2">&nbsp;</td>
</tr>
<tr>
<td colspan="2"><input name="hf3" type="hidden" id="hf3" value="Vare3"
/>
Vare 3</td>
</tr>
<tr>
<td>&nbsp;</td>
<td valign="top">Beskrivelse af produktet.</td>
</tr>
<tr>
<td nowrap="nowrap">Jeg bestiller:
<input name="vare3" type="text" id="vare3" size="3" maxlength="3"
onChange="beregningTotal();" />
stk. &aacute; kr. 75.-</td>
<td align="right">Ialt kr.
<input name="vare3_total" type="text" id="vare3_total" size="4"
maxlength="4" onChange="beregningTotal();" /></td>
</tr>
<tr>
<td colspan="2">&nbsp;</td>
</tr>
<tr>
<td><input type="button" name="Button" value="Beregn" /></td>
<td align="right"> Totalbel&oslash;b, ialt kr.
<input name="totalsum" type="text" id="totalsum" size="5"
maxlength="5" /> </td></tr>
<tr>
<td><input name="btnSubmit" type="submit" id="btnSubmit"
value="Submit" /></td>
<td>&nbsp;</td>
</tr>
</table>
</form>
</body>
</html>



---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.558 / Virus Database: 350 - Release Date: 02-01-2004



Torben Brandt (05-01-2004)
Kommentar
Fra : Torben Brandt


Dato : 05-01-04 02:21

Stig Holmberg skrev:
> Torben Brandt wrote:
>
>>Kan vi ikke få lov at se hvordan din form er konstrueret. Det er måske
>>nemmere at løse/forstå hvis vi kan se konkret hvordan det ser ud.
>
> Bestemt, her er den.

<snip : Stigs formular>

Hvis du ved hvor mange varer der i varelisten, så kunne du gøre sådan:

totalAntalVarer = 3
For id = 1 To totalAntalVarer
If CInt(Request.Form("vare" & i)) > 0 Then
' Der er bestilt mindst en af denne vare
Response.Write "Vare" & id & " er: " & _
Request.Form("hf" & id")
Response.Write "Antal af vare" & id & ": " & _
Request.Form("vare" & id) & "<br>"
Response.Write "Totalpris for vare" & id & ": " & _
Request.Form("vare" & id & "_total")
End If
Next

Har udnytter du lidt af kendskaben til navnene i Request.Form-samlingen.
De felter du skal bruge hedder alle "hf1", "hf2", ... eller "vare1",
"vare2", ... eller "vare1_total", "vare2_total", ... Så du kan løbe
disse igennem som jeg har vist heroverfor.

> Hvordan udelukker man tomme felter?

Det har Jens vist svaret på

> Hvordan udelukker man uønskede felter som f.eks. submit-knappen?

Knapperne er ikke med i ovenstående da vi kun udvælger dem, der begynder
med "hf", "vare" eller "vare#_total".

> Hvordan bestemmer man sorterings rækkefølgen?

Det ligger i For-løkken.


mvh Torben


Stig Holmberg (05-01-2004)
Kommentar
Fra : Stig Holmberg


Dato : 05-01-04 10:01

> > Torben Brandt wrote:

>
> Hvis du ved hvor mange varer der i varelisten, så kunne du gøre sådan:
>
> totalAntalVarer = 3
> For id = 1 To totalAntalVarer
> If CInt(Request.Form("vare" & i)) > 0 Then
> ' Der er bestilt mindst en af denne vare
> Response.Write "Vare" & id & " er: " & _
> Request.Form("hf" & id")
> Response.Write "Antal af vare" & id & ": " & _
> Request.Form("vare" & id) & "<br>"
> Response.Write "Totalpris for vare" & id & ": " & _
> Request.Form("vare" & id & "_total")
> End If
> Next
>
> Har udnytter du lidt af kendskaben til navnene i Request.Form-samlingen.
> De felter du skal bruge hedder alle "hf1", "hf2", ... eller "vare1",
> "vare2", ... eller "vare1_total", "vare2_total", ... Så du kan løbe
> disse igennem som jeg har vist heroverfor.

Jeg kan umiddelbart ikke få din kode til at virke efter hensigten, der
kommer ikke nogen fejlmeddelelse, men den modtagende side er hel blank.

Kan det have noget at gøre med at id er et tal og resten er strenge?

Mvh. Stig Holmberg


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.558 / Virus Database: 350 - Release Date: 02-01-2004



Torben Brandt (05-01-2004)
Kommentar
Fra : Torben Brandt


Dato : 05-01-04 14:13

Stig Holmberg skrev:
>Torben Brandt wrote:

<snip : noget kode>

> Jeg kan umiddelbart ikke få din kode til at virke efter hensigten, der
> kommer ikke nogen fejlmeddelelse, men den modtagende side er hel blank.

Jeg havde vist også lavet mere end en fejl i den kode :(
Her er rettet lidt:
totalAntalVarer = 3
For id = 1 To totalAntalVarer
If CInt(Request.Form("vare" & id)) > 0 Then
' Der er bestilt mindst en af denne vare
Response.Write "Vare" & id & " er: " & _
Request.Form("hf" & id") & "<br>"
Response.Write "Antal af vare" & id & ": " & _
Request.Form("vare" & id) & "<br>"
Response.Write "Totalpris for vare" & id & ": " & _
Request.Form("vare" & id & "_total") & "<br>"
End If
Next

Hvis siden forbliver blank, så tilføje disse to linier lige inden linien
med "End If":
Else
Response.Write "hf" & id & " blev ikke bestilt<br>"

/Torben


Stig Holmberg (05-01-2004)
Kommentar
Fra : Stig Holmberg


Dato : 05-01-04 20:31

Torben Brandt wrote
>
> Jeg havde vist også lavet mere end en fejl i den kode :(
> Her er rettet lidt:
> totalAntalVarer = 3
> For id = 1 To totalAntalVarer
> If CInt(Request.Form("vare" & id)) > 0 Then
> ' Der er bestilt mindst en af denne vare
> Response.Write "Vare" & id & " er: " & _
> Request.Form("hf" & id") & "<br>"
> Response.Write "Antal af vare" & id & ": " & _
> Request.Form("vare" & id) & "<br>"
> Response.Write "Totalpris for vare" & id & ": " & _
> Request.Form("vare" & id & "_total") & "<br>"
> End If
> Next
>
> Hvis siden forbliver blank, så tilføje disse to linier lige inden linien
> med "End If":
> Else
> Response.Write "hf" & id & " blev ikke bestilt<br>"
>
> /Torben

Jeps

Dette virker fint!. Dog er det sådan at hvis man ikke udfylder noget i
formularen så giver den denne fejl:

a.. Error Type:
Microsoft VBScript runtime (0x800A000D)
Type mismatch: 'CInt'
/modtag2.asp, line 15

Mvh. Stig Holmberg


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.558 / Virus Database: 350 - Release Date: 02-01-2004



Torben Brandt (05-01-2004)
Kommentar
Fra : Torben Brandt


Dato : 05-01-04 21:55

Stig Holmberg skrev:
> Torben Brandt wrote
>
>>Jeg havde vist også lavet mere end en fejl i den kode :(
>>Her er rettet lidt:
>> totalAntalVarer = 3
>> For id = 1 To totalAntalVarer

Indsæt her:
If IsNumeric(Request.Form("vare" & id)) Then

>> If CInt(Request.Form("vare" & id)) > 0 Then
>> ' Der er bestilt mindst en af denne vare
>> Response.Write "Vare" & id & " er: " & _
>> Request.Form("hf" & id") & "<br>"
>> Response.Write "Antal af vare" & id & ": " & _
>> Request.Form("vare" & id) & "<br>"
>> Response.Write "Totalpris for vare" & id & ": " & _
>> Request.Form("vare" & id & "_total") & "<br>"
>> End If

Og indsæt her:
End If

>> Next
>>
> Dette virker fint!. Dog er det sådan at hvis man ikke udfylder noget i
> formularen så giver den denne fejl:
>
> a.. Error Type:
> Microsoft VBScript runtime (0x800A000D)
> Type mismatch: 'CInt'
> /modtag2.asp, line 15

Jeg har vist rettelserne herover, men generelt bør man validere /alle/
inddata. Hvad hvis en eller anden bestiller 1.5 af en vare, eller et
negativt antal..? Hvad hvis brugeren ikke bruger javascript, så
beregn-funktionen ikke virker, og han bestiller 100 af en vare, men selv
angiver totalprisen til 1 kr?

mvh Torben


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

Månedens bedste
Årets bedste
Sidste års bedste