/ 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
Varenummer og antal (fortsat)
Fra : Rasmus Nielsen


Dato : 24-09-02 10:16

Hej,

Tilsyneladende døde den forrige tråd, selvom en løsning var meget tæt på,
takket være Mark S. Rasmussen.

For at ridse det kort op. Til asp-siden bliver der via form-felter i
formatet "antal_XXXX", hvor XXXX altid er et firecifret varenummer, sendt
det antal af det pågældende varenummer, som kunder ønsker at købe. Jeg
ønsker at finde alle varenumrene (altså det efter "antal_") og det
tilhørende antal og udskrive dem i en simpel array. Det med at udskrive de
bestilte varenumre fungerede fint, men det er endnu ikke lykkedes også at
udskrive det tilhørende antal. Jeg fik at vide at flg. skulle virke:

<%
Dim strTemp,strTemp2,arrVarer,arrVareNumre, i
For i = 1 To Request.Form.Count
If InStr(Item, "antal_") > 0 Then
strTemp = "," & Request.Form(i) & strTemp
strTemp2 = "," & Mid(Request.Form.Key(i),7) & strTemp2
End If
Next
arrVarer=Split(Mid(strTemp, 2), ",")
arrVarenumre=Split(Mid(strTemp2, 2), ",")

For t = LBound(arrVarer) to UBound(arrVarer)
Response.Write "<br><li>" & arrVarenumre(t) & ":" & arrVarer(t)
Next
%>

Problemet er, at det returnerer en fuldstændig tom side - selvom der er
formfelter på den foregående side (og det er ikke noget i den stil, der er
galt, for det virker, hvis jeg bruger et andet script til kun at finde
varenumrene).

Hvad er der mon i vejen?

--
Venlig hilsen / Best regards,

Rasmus Nielsen.



 
 
Chrisser (24-09-2002)
Kommentar
Fra : Chrisser


Dato : 24-09-02 10:29


"Rasmus Nielsen" <postmaster@rasmusn.dk> skrev i en meddelelse
news:3d902d4a$0$39025$edfadb0f@dspool01.news.tele.dk...
>
> For t = LBound(arrVarer) to UBound(arrVarer)
> Response.Write "<br><li>" & arrVarenumre(t) & ":" & arrVarer(t)
> Next
> %>
>
> Problemet er, at det returnerer en fuldstændig tom side - selvom der er
> formfelter på den foregående side (og det er ikke noget i den stil, der er
> galt, for det virker, hvis jeg bruger et andet script til kun at finde
> varenumrene).
>
> Hvad er der mon i vejen?
>
Har du prøvet at køre for-løkken på arrVarenumre i stedet for arrVarer, og
stadig skrive begge dele ud ???
(eller udskrive dine to strTemp's)
- jeg tænker på om dit arrVarer nu også bliver fyldt op....hvis det af en
eller anden grund var tomt, så sker der jo intet ved brug af LBound og
UBound.......


Chrisser



Rasmus Nielsen (24-09-2002)
Kommentar
Fra : Rasmus Nielsen


Dato : 24-09-02 10:44

> Har du prøvet at køre for-løkken på arrVarenumre i stedet for arrVarer, og
> stadig skrive begge dele ud ???

Det giver samme resultat.

> (eller udskrive dine to strTemp's)

Hmm... De er begge to tomme. Det må være det, der er problemet - spørgsmålet
er bare, hvorfor er de tomme?

Et lille eksempel på, at det virker at udskrive antallet:

<%
Dim strTemp,arrVarer
For Each Item In Request.Form()
If InStr(Item, "antal_") > 0 Then
strTemp = "," & Request.Form(Item) & strTemp
End If
Next
arrVarer=Split(Mid(strTemp, 2), ",")
For t = LBound(arrVarer) to UBound(arrVarer)
Response.Write "<br><li>" & arrVarer(t)
Next
%>

--
Venlig hilsen / Best regards,

Rasmus Nielsen.



Chrisser (24-09-2002)
Kommentar
Fra : Chrisser


Dato : 24-09-02 10:48


"Rasmus Nielsen" <postmaster@rasmusn.dk> skrev i en meddelelse
news:3d9033d7$0$38995$edfadb0f@dspool01.news.tele.dk...
> > Har du prøvet at køre for-løkken på arrVarenumre i stedet for arrVarer,
og
> > stadig skrive begge dele ud ???
>
> Det giver samme resultat.
>
> > (eller udskrive dine to strTemp's)
>
> Hmm... De er begge to tomme. Det må være det, der er problemet -
spørgsmålet
> er bare, hvorfor er de tomme?
>
> Et lille eksempel på, at det virker at udskrive antallet:
>
> <%
> Dim strTemp,arrVarer
> For Each Item In Request.Form()
> If InStr(Item, "antal_") > 0 Then
> strTemp = "," & Request.Form(Item) & strTemp
> End If
> Next
> arrVarer=Split(Mid(strTemp, 2), ",")
> For t = LBound(arrVarer) to UBound(arrVarer)
> Response.Write "<br><li>" & arrVarer(t)
> Next
> %>
>
HOV !!!!!!!!!!!
kig lige på:
For Each Item In Request.Form()
If InStr(Item, "antal_") > 0 Then
strTemp = "," & Request.Form(Item) & strTemp
End If
Next

og derefter på:

For i = 1 To Request.Form.Count
If InStr(Item, "antal_") > 0 Then
strTemp = "," & Request.Form(i) & strTemp
strTemp2 = "," & Mid(Request.Form.Key(i),7) & strTemp2
End If
Next

- du kan ikke tage Item i en løkke der kører på i, da du ikke har fat i
Item....
( din if-sætning )
Skal være noget i retning af:
If inStr(Request.form(i),"antal_")>0..................

Chrisser






Rasmus Nielsen (24-09-2002)
Kommentar
Fra : Rasmus Nielsen


Dato : 24-09-02 13:32

> Skal være noget i retning af:
> If inStr(Request.form(i),"antal_")>0..................

Det gør ingen forskel overhovedet. Jeg har nu flg. - det returnerer en tom
side, og strTemp og strTemp2 er tomme...:

<%
Dim strTemp,strTemp2,arrVarer,arrVareNumre, i
For i = 1 To Request.Form.Count
If inStr(Request.form(i),"antal_") > 0 Then
strTemp = "," & Request.Form(i) & strTemp
strTemp2 = "," & Mid(Request.Form.Key(i),7) & strTemp2
End If
Next
arrVarer = Split(Mid(strTemp, 2), ",")
arrVarenumre = Split(Mid(strTemp2, 2), ",")


For t = LBound(arrVarenumre) to UBound(arrVarenumre)
Response.Write "<br><li>" & arrVarenumre(t) & ":" & arrVarer(t)
Next
%>

--
Venlig hilsen / Best regards,

Rasmus Nielsen.



Peter Lykkegaard (24-09-2002)
Kommentar
Fra : Peter Lykkegaard


Dato : 24-09-02 14:07

Som svar på skriblerier nedfældet af Rasmus Nielsen :

>> Skal være noget i retning af:
>> If inStr(Request.form(i),"antal_")>0..................
>
> Det gør ingen forskel overhovedet. Jeg har nu flg. - det returnerer
> en tom side, og strTemp og strTemp2 er tomme...:
>
Prøv at smide nogle response.write ind i din løkke

> <%
> Dim strTemp,strTemp2,arrVarer,arrVareNumre, i
> For i = 1 To Request.Form.Count
> If inStr(Request.form(i),"antal_") > 0 Then
> strTemp = "," & Request.Form(i) & strTemp
> strTemp2 = "," & Mid(Request.Form.Key(i),7) & strTemp2

Response.Write strTemp & "<br>"
Response.Write strTemp2 & "<br>"

> End If
> Next

Du kan evt udvide eksemplet til at inkludere egenskaberne på din
Request.Form collection for hvert gennemløb


mvh/Peter Lykkegaard



Chrisser (24-09-2002)
Kommentar
Fra : Chrisser


Dato : 24-09-02 14:02


"Rasmus Nielsen" <postmaster@rasmusn.dk> skrev i en meddelelse
news:3d905b13$0$62723$edfadb0f@dspool01.news.tele.dk...
> > Skal være noget i retning af:
> > If inStr(Request.form(i),"antal_")>0..................
>
> Det gør ingen forskel overhovedet. Jeg har nu flg. - det returnerer en tom
> side, og strTemp og strTemp2 er tomme...:
>
Ang:
strTemp = "," & Request.Form(i) & strTemp

- nu har jeg altid gjort det omvendt, altså lagt strengen "oven i sig selv"
først, så jeg ved faktisk ikke hvordan VBScript tager dine sætninger, du
siger at det hat virket, men prøv at byt rundt på det alligevel:
strTemp = strTemp & Request.Form(i) & ","

Udover det vil jeg foreslå dig at indsætte et par response.write sætninger
inde i din løkke for at følge dine værdier:

For i = 1 To Request.Form.Count
response.write "i: " & i & ", felt: " & Request.form(i) & "<br>"
response.flush
If inStr(Request.form(i),"antal_") > 0 Then
strTemp = "," & Request.Form(i) & strTemp
response.write "strTemp: " & strTemp & "<br>"
response.flush
strTemp2 = "," & Mid(Request.Form.Key(i),7) & strTemp2
End If
Next

Jeg er faktisk interesseret i hvad der vil blive udskrevet ved især "felt" i
for-løkken, spørgsmålet er om du ikke blot får fat i feltnavnet og ikke
værdien, men det er lettest at se hvis du udskriver hen ad vejen.

MVH
Chrisser







Rasmus Nielsen (24-09-2002)
Kommentar
Fra : Rasmus Nielsen


Dato : 24-09-02 14:41

> Jeg er faktisk interesseret i hvad der vil blive udskrevet ved især "felt"
i
> for-løkken, spørgsmålet er om du ikke blot får fat i feltnavnet og ikke
> værdien, men det er lettest at se hvis du udskriver hen ad vejen.

Den udskriver så en liste i flg. format:

i: 1 (kører videre med 2, 3 osv. for hvert formfelt), felt: 2 (værdien af
formfeltet)

Problemet er vel, at der hvor navnet på formfeltet skulle stå er der bare
tal (1,2,3,4 osv.) i stedet for navnet, så den kan ikke finde felterne med
"antal_".

Hvorfor hulen er der tal og ikke navne?

--
Venlig hilsen / Best regards,

Rasmus Nielsen.



Chrisser (24-09-2002)
Kommentar
Fra : Chrisser


Dato : 24-09-02 14:48


"Rasmus Nielsen" <postmaster@rasmusn.dk> skrev i en meddelelse
news:3d906b40$0$258$edfadb0f@dspool01.news.tele.dk...
> > Jeg er faktisk interesseret i hvad der vil blive udskrevet ved især
"felt"
> i
> > for-løkken, spørgsmålet er om du ikke blot får fat i feltnavnet og ikke
> > værdien, men det er lettest at se hvis du udskriver hen ad vejen.
>
> Den udskriver så en liste i flg. format:
>
> i: 1 (kører videre med 2, 3 osv. for hvert formfelt), felt: 2 (værdien af
> formfeltet)
>
> Problemet er vel, at der hvor navnet på formfeltet skulle stå er der bare
> tal (1,2,3,4 osv.) i stedet for navnet, så den kan ikke finde felterne med
> "antal_".
>
> Hvorfor hulen er der tal og ikke navne?
>
Prøv at tjekke om du får noget ud af syntaksen "request.Form(i).name" og
"request.Form(i).value"
( jeg kan sg* ikke huske om man kan gøre dette på request-objektet, men hvis
man kan så tror jeg at dine problemer er ved at løses....)

Ellers må jeg lige se hvordan et udsnit af din form reelt ser ud.

Jeg har benyttet mig meget af den metode hvor jeg i opbygningen af formen
navngiver mine felter i en forløkke(der her kører på k)
eks: <input type="text" name="mitfelt<%k%>" value="">
Efter opbygningen skriver jeg værdien af k i et hidden felt og på
modtagersiden henter jeg værdierne ud i en løkke der igen kører på k, eks:
For k=0 to "værdi af hidden felt"
værdi = request.form("mitfelt"&k)
// mitfelt&k giver tilsammen navnet på det inputfelt du vil læse værdien
fra.....
Next

- måske det giver dig ideer ???

MVH
Chrisser




Rasmus Nielsen (24-09-2002)
Kommentar
Fra : Rasmus Nielsen


Dato : 24-09-02 15:10

> Prøv at tjekke om du får noget ud af syntaksen "request.Form(i).name" og
> "request.Form(i).value"
> ( jeg kan sg* ikke huske om man kan gøre dette på request-objektet, men
hvis
> man kan så tror jeg at dine problemer er ved at løses....)

Den giver:

Object doesn't support this property or method: 'Request.Form(...).value'

> Ellers må jeg lige se hvordan et udsnit af din form reelt ser ud.

Så gerne. De felter jeg vil have fat i i denne sammenhæng ser alle således
ud:
<input name="antal_1109" onkeyup="calc(1109,995)" value="0">
Hvor 1109 er et firecifret varenummer, som varierer.

Venlig hilsen, Rasmus Nielsen.



Chrisser (25-09-2002)
Kommentar
Fra : Chrisser


Dato : 25-09-02 07:43


"Rasmus Nielsen" <postmaster@rasmusn.dk> skrev i en meddelelse
news:3d907213$0$280$edfadb0f@dspool01.news.tele.dk...
> Så gerne. De felter jeg vil have fat i i denne sammenhæng ser alle således
> ud:
> <input name="antal_1109" onkeyup="calc(1109,995)" value="0">
> Hvor 1109 er et firecifret varenummer, som varierer.
>
Så kan man vist ikke komme udenom at kende navnene på inputfelterne....
Har du mod på at lave det lidt om ?

Så kunne du opbygge din form a'la dette:
(her går jeg ud fra at du opbygger din form på baggrund af et rs med dine
varer ???. Og der hvor jeg har skrevet dit varenr skal du selvfølgelig gøre
som du ellers gør for at få de rigtige værdier ind, husk type-angivelserne,
da det jo kun er det ene felt der ønskes vist)
k=0
For k=0 To rs.recordcount - 1
<input type="text" name="antal<%k%>" onkeyup="calc(1109,995)" value="0">
<input type="hidden" name="varenr<%k%>" value="1109">
rs.MoveNext
Next
<input type="hidden" name="antalRec" value="<%k%>"

Og så kan du på modtagesiden gøre sådan:
antrec = Request.Form("antalRec")
For i = 0 To antrec
vare = Request.Form("varenr"&i)
antal = Request.Form("antal"&i)
// putte i dine strings som "du plejer"
Next

Ellers skal jeg lige læse lidt op på om man kan undgå at kende navnene på
sine input-felter....

Chrisser





Rasmus Nielsen (25-09-2002)
Kommentar
Fra : Rasmus Nielsen


Dato : 25-09-02 09:21

> Så kan man vist ikke komme udenom at kende navnene på inputfelterne....
> Har du mod på at lave det lidt om ?

Nej, det skulle vel egentlig ikke være nødvendigt. Jeg vil jo bare finde
alle form-felter, der begynder med "antal_" og de tilhørende værdier og så
tage de sidste fire tegn af form-feltets navn. Det skulle da være muligt i
asp?

--
Venlig hilsen / Best regards,

Rasmus Nielsen.



Chrisser (25-09-2002)
Kommentar
Fra : Chrisser


Dato : 25-09-02 09:41


"Rasmus Nielsen" <postmaster@rasmusn.dk> skrev i en meddelelse
news:3d9171e0$0$165$edfadb0f@dspool01.news.tele.dk...
> > Så kan man vist ikke komme udenom at kende navnene på inputfelterne....
> > Har du mod på at lave det lidt om ?
>
> Nej, det skulle vel egentlig ikke være nødvendigt. Jeg vil jo bare finde
> alle form-felter, der begynder med "antal_" og de tilhørende værdier og så
> tage de sidste fire tegn af form-feltets navn. Det skulle da være muligt i
> asp?
>
De tal du fik skrevet ud svarede til de tal der er indtastet i
input-felterne. (Jeg har testet dine filer).
Desværre ser jeg ingen mulighed for at hente navnet på inputfelterne, altså
der hvor du har valgt at lægge varenummeret. Jeg har kigget i min ASP-bog,
og jeg har selv testet lidt på det, jeg tror simpelthen ikke det kan lade
sig gøre at hente navnene ud - kun værdierne.

ALLE DER VED NOGET ANDET ER VELKOMMEN TIL AT RETTE MIG !!!!!!

Og så er vi tilbage ved mit forslag hvor du indsætter et hidden felt med dit
varenummer, da jeg ikke går ud fra at du har nogen mulighed for, på
modtager-siden at teste for dine varenumre i stedet for "antal_"
( hvis varenumrene var fortløbende burde det kunne lade sig gøre alligevel)
Men jeg kigger lidt videre, nu er jeg nemlig nysgerrig.......

Chrisser



Jens Gyldenkærne Cla~ (25-09-2002)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 25-09-02 10:14

Chrisser skrev:

> Desværre ser jeg ingen mulighed for at hente navnet på
> inputfelterne, ...
> ...jeg tror simpelthen ikke det kan lade sig
> gøre at hente navnene ud - kun værdierne.

Det må da undersøges . Der er desværre ikke en
Request.Form(i).Name-egenskab at tage fat i - men man kan få fat i
hele formobjektet ved at bruge Request.Form uden parametre. Det
giver en lang streng med alle formfelter (navn=værdi) adskilt af &
(det svarer til hele querystring hvis man bruger GET).


Bruger man så

<% dim a
   a = split(Request.Form, "&")
   
   for i = lbound(a) to ubound(a)
      response.write "A(" & i & "): " & a(i) & "<br>"
   next
   
%>

Har man nu et array hvor hvert element er af typen feltnavn=værdi.
Det kan måske bruges til at arbejde videre på.

Man kan måske også bruge felternes placering i forhold til hinanden
til at beregne noget. Men det er en ret usikker metode - hvis man
pludselig tilføjer eller fjerner et felt i begyndelsen af formen
kan det gå grueligt galt.


> Og så er vi tilbage ved mit forslag hvor du indsætter et
> hidden felt med dit varenummer,

Det ville også være mit bedste bud. Man kan aflæse
varenummerfelterne først og benytte værdierne herfra til at hente
værdierne i de varenummerspecifikke felter.

--
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

Chrisser (25-09-2002)
Kommentar
Fra : Chrisser


Dato : 25-09-02 11:22

"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev i en meddelelse
news:Xns9294723A6BAA3jcdmfdk@193.88.15.213...
> Chrisser skrev:
>
> Det må da undersøges . Der er desværre ikke en
> Request.Form(i).Name-egenskab at tage fat i - men man kan få fat i
> hele formobjektet ved at bruge Request.Form uden parametre. Det
> giver en lang streng med alle formfelter (navn=værdi) adskilt af &
> (det svarer til hele querystring hvis man bruger GET).
>
>
> Bruger man så
>
> <% dim a
> a = split(Request.Form, "&")
>
> for i = lbound(a) to ubound(a)
> response.write "A(" & i & "): " & a(i) & "<br>"
> next
>
> %>
>
> Har man nu et array hvor hvert element er af typen feltnavn=værdi.
> Det kan måske bruges til at arbejde videre på.

Selvfølgelig, hvorfor f* tænkte jeg ikke på det....
- så skal man bare huske at navngive sin submit, så den ikke laver ballade

Chrisser



Jens Gyldenkærne Cla~ (25-09-2002)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 25-09-02 11:52

Chrisser skrev:

> Selvfølgelig, hvorfor f* tænkte jeg ikke på det....


Sådan er det desværre mange gange - den enkle løsning ligger lige
om hjørnet, uden at man er i nærheden af at se den.

> - så skal man bare huske at navngive sin submit, så den ikke
> laver ballade

Hvis man undlader at give den et navn så kommer den slet ikke med i
Request.Form-objektet. Se evt. <http://musikinfo.dk/test/test.html>

--
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

Rasmus Nielsen (25-09-2002)
Kommentar
Fra : Rasmus Nielsen


Dato : 25-09-02 12:41

> Det ville også være mit bedste bud.

Og mange tak for det!

--
Venlig hilsen / Best regards,

Rasmus Nielsen.



Rasmus Nielsen (25-09-2002)
Kommentar
Fra : Rasmus Nielsen


Dato : 25-09-02 11:19

> Og så kan du på modtagesiden gøre sådan:
> antrec = Request.Form("antalRec")
> For i = 0 To antrec
> vare = Request.Form("varenr"&i)
> antal = Request.Form("antal"&i)
> // putte i dine strings som "du plejer"
> Next

Men når der er tale om uafhængige formfelter kan jeg vel ikke sikre mig, at
det rigtige varenummer pares med det rigtige antal?

--
Venlig hilsen / Best regards,

Rasmus Nielsen.



Chrisser (25-09-2002)
Kommentar
Fra : Chrisser


Dato : 25-09-02 11:28

"Rasmus Nielsen" <postmaster@rasmusn.dk> skrev i en meddelelse
news:3d918d77$0$39004$edfadb0f@dspool01.news.tele.dk...
> > Og så kan du på modtagesiden gøre sådan:
> > antrec = Request.Form("antalRec")
> > For i = 0 To antrec
> > vare = Request.Form("varenr"&i)
> > antal = Request.Form("antal"&i)
> > // putte i dine strings som "du plejer"
> > Next
>
> Men når der er tale om uafhængige formfelter kan jeg vel ikke sikre mig,
at
> det rigtige varenummer pares med det rigtige antal?
>
Jo, hvis du opbygger din form dynamisk i en for-løkke, som jeg har foreslået
ovenover et sted, så vil der for hvert
<input type="text" name="antal0">
være en tilsvarende
<input type="hidden" name="varenr0">
- og derfor går det op i sidste ende, da de i løkken så at sige gøres
afhængige af hinanden via det fortløbende nummer.
Jeg bruger metoden meget da jeg laver mange ting der skal opbygges i linier
med "ens" felter i hver linie.

Men hvis du ikke har mod på det, så læs lige Jens Gyldenkærnes indlæg, han
kan faktisk tænke logisk til forskel fra visse andre idag
Chrisser





Rasmus Nielsen (24-09-2002)
Kommentar
Fra : Rasmus Nielsen


Dato : 24-09-02 21:40

Hej igen,

Eftersom der endnu ikke er fundet en løsning, og jeg bliver mere og mere
frustreret, har jeg lavet to filer, som dem, der har lyst til at hjælpe mig
kan se. De kan findes på www.rasmusn.dk/asptest.zip

Zip-filen indeholder formtest.html (som er en stærkt forsimplet version af
formen - men det hjælper ikke på problemet) og asptest.asp, som er asp
scriptet.

Så kan dem der vil lege med det jo gøre det, og forhåbentlig finde en
løsning.

På forhånd tusind tak!

--
Venlig hilsen / Best regards,

Rasmus Nielsen.



Søg
Reklame
Statistik
Spørgsmål : 177551
Tips : 31968
Nyheder : 719565
Indlæg : 6408837
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste