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
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.
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
258 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a