webForumDet fria alternativet

Andas djupt: en jättefråga

ASP

1 svar · 224 visningar · startad av katis

Medlem sedan apr. 200220 inlägg
Frågan#1

Goddagens!

Nu är jag nästan färdig med min första ASP-snutten. Wow!!!
Tackar hjärtligt alla som bidragit med sina svar.

Mitt lilla programm fungerar men på nåt lustigt sätt.
Först ska jag förklara vad det går ut på.
Jag har en text-fil hit kommer alla beställningar från sajten.
Doc1.txt
*
00:00:00
00:00:00
00:00:00
12137679-1
ABRAHAMSSON SUNE
RÅDAVÄGEN 33
43136
Malmö
SE
sune@telia.com

11111111111111,0102
738
73,25
147,6
cacher3-ext.wise.edt.ericsson.se
MULTIPROG,1,00:00:00
*
00:00:00
00:00:00
00:00:00
01093812-1
Kjell Olsson
Bergsvägen 17
43361
Uppsala
SE
kjell@dinbil.se
00000000000000
COD
1550
75
310
scaniaproxy.scania.se
GOLDCARD,5,00:00:00
FUNCARDWAFER,2,00:00:00
*
00:00:00
00:00:00
00:00:00
12137679-2
ABRAHAMSSON SUNE
RÅDAVÄGEN 33
43136
Malmö
SE
sune@telia.com

111111111111111,0102
738
73,25
147,6
cacher3-ext.wise.edt.ericsson.se
MULTIPROG,1,00:00:00
MULTIPROG,1,00:00:00
*
00:00:00
00:00:00
00:00:00
01093812-2
Kjell Olsson
Bergsvägen 17
43361
Sävedalen
SE
kjell@dinbil.se
000000000000000
COD
1550
75
310
scaniaproxy.scania.se
GOLDCARD,5,00:00:00
FUNCARDWAFER,2,00:00:00
MULTIPROG,1,00:00:00
*
Härifrån sorteras information i mitt tur och ordning, om id från webläsarens adressfälte matchar med inum från Doc1.txt(rad 4), enligt asp-filen:
<html>
<%@ LANGUAGE="VBScript"%>
<body>
<p><h3><font style = "Verdana">Dina gamla beställningar</font></h3></p>
<%
path = Server.MapPath("\bonab")
fil = path & "\Doc1.txt"

Set MittTxtObj = Server.CreateObject("Scripting.FileSystemObject")
Set MinFil = MittTxtObj.OpenTextFile(fil)

While Not MinFil.AtEndOfStream
inum = Request.QueryString("id")
godkand = MinFil.ReadLine
skickad = MinFil.ReadLine
tillbaka = MinFil.ReadLine

bi = MinFil.ReadLine

arrArray = Split(bi,"-")
idnum = arrArray(0)
bestallnum = arrArray(1)

if idnum = inum then
namn = MinFil.ReadLine
adress = MinFil.ReadLine
zip = MinFil.ReadLine
stad = MinFil.ReadLine
land = MinFil.ReadLine
mail = MinFil.ReadLine
telnum = MinFil.ReadLine
satt= MinFil.ReadLine

if satt = "COD" then
betsatt = "betalas som postförskott. När paketet är skickat tar det 1-3 dagar innan det är framme, och du har då 30 dagar på dig att hämta paketet på posten, annars går det tillbaks och du betalar 150 kr i straffavgift."
else
betsatt = "dras från ditt kreditkort."
end if

totalt = MinFil.ReadLine
frakt = MinFil.ReadLine
moms = MinFil.ReadLine
dator = MinFil.ReadLine

%>
<br>Den <b><%Response.Write godkand %></b> gjorde du din <b><%Response.Write bestallnum %></b>:e beställning:<br>
<b><%Response.Write namn %>, <%Response.Write adress %>, <%Response.Write zip %>, <%Response.Write stad %>, <%Response.Write land %></b><br>
Den innehåller följande varor:<br>
<b>
<%
for i = 0 to 10
varor = MinFil.ReadLine
if varor = "*" then
exit for
else
myArray = Split(varor,",")
produkt = myArray(0)
antal = myArray(1)
levdatum = myArray(2)

Response.Write antal & " "
Response.Write produkt & "\<br\>"
    end if
    Next

%>
</b>
Beställningen ser ut att kunna skickas ungefär <b><%Response.Write levdatum %></b><br>
Priset inklusive frakt blir <b><%Response.Write totalt %></b> som <%Response.Write betsatt %>
<br>
<%
end if
Wend
MinFil.Close
%>
</body>
</html>
Det lustiga är att det funkar med Sune, men inte med Kjell.
Då programmet kommer till Kjell visar det bara hans första beställning och sen stannar det med följande meddellande:
"Microsoft VBScript runtime error '800a0009'
Subscript out of range: '[number: 1]'
/bonab/go.asp, line 27" - hänvisning till
"bestallnum = arrArray(1)".
Varför Kjell är inte omtyckt? :)
Det är ju samma villkor för båda.
Kanske nån har lust och köra mitt lila programm, för att förstå det hela bättre.

Katja

Medlem sedan dec. 200012 464 inlägg
#2

Du har denna rad

if idnum = inum then

om det villkoret inte är uppfyllt så måste du ha en else-gren som läser igenom filen tills dess att det står en * (eller att du kommer till slutet på filen).

Som det är nu så är du på fel position i filen när du kommer till denna kod

godkand = MinFil.ReadLine

Variabeln godkand kommer då att få värdet SUNE ABRAHAMSSON

263 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)