/ 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
Problem med shopping cart
Fra : Belial


Dato : 28-09-03 10:39

Jeg er ved at prøve at lave et indkøbssystem baseret på en bog jeg købte.
Jeg kan dog ikke få selve indkøbskurven til at virke. Fejlen jeg får er:

Microsoft VBScript runtime error '800a000d'
Type mismatch: '[string: ""]'

Min umiddelbare vurdering er, at det er fordi at der mangler en værdi i
strengen. Jeg kan bare ikke se hvorfor. Linien den fejlmelder i er denne:

orderTotal = orderTotal + ( localCart( CARTPPRICE, i ) * localCart(
CARTPQUANTITY, i ) )

Er der nogen der kan gennemskue fejlen?

Hele scriptet i sessioncartmodulet ser således ud:

<%
' Define Constants
CONST CARTPID = 0
CONST CARTPNAME = 1
CONST CARTPPRICE = 2
CONST CARTPQUANTITY = 3

' Get The Shopping Cart
IF NOT isArray( Session( "cart" ) ) THEN
DIM localCart( 4, 20 )
ELSE
localCart = Session( "cart" )
END IF

' Get Product Information
productID = TRIM( Request( "pid" ) )
productName = TRIM( Request( "productName" ) )
productPrice = TRIM( Request( "productPrice" ) )

' Add Item to cart
IF productID <> "" THEN
foundIT = FALSE
FOR i = 0 TO UBOUND( localCart )
IF localCart( CARTPID, i ) = productID THEN
localCart( CARTPQUANTITY, i ) = localCart( CARTPQUANTITY, i ) + 1
foundIT = TRUE
EXIT FOR
END IF
NEXT
IF NOT foundIT THEN
FOR i = 0 TO UBOUND( localCart, 2 )
IF localCart( CARTPID, i ) = "" THEN
localCart( CARTPID, i ) = productID
localCart( CARTPNAME, i ) = productName
localCart( CARTPPRICE, i ) = productPrice
localCart( CARTPQUANTITY, i ) = 1
EXIT FOR
END IF
NEXT
END IF
END IF

' Update Shopping Cart Quantities
IF Request( "updateQ" ) <> "" THEN
FOR i = 0 TO UBOUND( localCart, 2 )
newQ = TRIM( Request( "pq" & localCart( CARTPID, i ) ) )
deleteProduct = TRIM( Request( "pd" & localCart( CARTPID, i ) ) )
IF newQ = "" or newQ = "0" THEN
localCart( CARTPID, i ) = ""
ELSE
IF isNumeric( newQ ) THEN
localCart( CARTPQUANTITY, i ) = newQ
END IF
END IF
NEXT
END IF


' Update Session variable with Array
Session( "cart" ) = localCart
%>
<html>
<head><title>Session Shopping Cart</title></head>
<body bgcolor="white">

<center>
<font face="Arial" size=3 color="darkgreen">
<b>Your shopping cart:</b>
</font>
<%
orderTotal = 0
%>
<form method="post" action="sessionCart.asp">
<input name="updateQ" type="hidden" value="1">
<table bgcolor="lightyellow" border=1
cellpadding=4 cellspacing=0>
<tr bgcolor="lightgreen">
<th>Product</th>
<th>Price</th>
<th>Quantity</th>
</tr>
<%
FOR i = 0 TO UBOUND( localCart, 2 )
IF localCart( CARTPID, i ) <> "" THEN
orderTotal = orderTotal + ( localCart( CARTPPRICE, i ) * localCart(
CARTPQUANTITY, i ) ) <!--------- Her er fejlen!! ----!>
%>
<tr>
<td>
<%=Server.HTMLEncode( localCart( CARTPNAME, i ) )%>
</td>
<td>
<%=formatCurrency( localCart( CARTPPRICE, i ) )%>
</td>
<td>
<input name="pq<%=localCart( CARTPID, i )%>" type="text" size=4
value="<%=localCart( CARTPQUANTITY, i )%>">
<input name="pd<%=localCart( CARTPID, i )%>" type="checkbox" value="1">
Delete
</td>
</tr>
<%
END IF
NEXT
%>
<tr bgcolor="yellow">
<td colspan=2 align=right>
<b>Order Total:</b>
</td>
<td>
<%=formatCurrency( orderTotal )%>
</td>
</tr>
<tr>
<td colspan=3>
<table border=0>
<tr>
<td align="right">
<input type="submit" value="Update Cart">
</td>
</form>
<form method="post" action="checkout.asp">
<td>
<input type="submit" value="Checkout">
</td>
</form>
<form action="default.asp">
<td>
<input type="submit" value="Continue Shopping">
</td>
</form>
</tr>
</table>
</td>
</tr>
</table>


</center>

</body>
</html>




 
 
Jens Gyldenkærne Cla~ (28-09-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 28-09-03 20:32

Belial skrev:

> Microsoft VBScript runtime error '800a000d'
> Type mismatch: '[string: ""]'
>
> Min umiddelbare vurdering er, at det er fordi at der mangler
> en værdi i strengen.

En anden mulighed er at du prøver at bruge en streng hvor der
kræves et tal eller omvendt.

> orderTotal = orderTotal + ( localCart( CARTPPRICE, i ) *
> localCart( CARTPQUANTITY, i ) )

Debug for at finde fejlen. Udskriv CARTPPRICE, i, CARTPQUANTITY,
localCart og de to værdier fra localCart.

Det er muligt at problemet kan løses med Cdbl omkring andet og
tredje led i summen.
--
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

Belial (28-09-2003)
Kommentar
Fra : Belial


Dato : 28-09-03 22:17

> Debug for at finde fejlen. Udskriv CARTPPRICE, i, CARTPQUANTITY,
> localCart og de to værdier fra localCart.

Hej Jens. Jeg har netop debugget og det giver et lidt forskelligt resultat
alt efter hvilket produkt jeg prøver at tilføje, men den giver eksempelvis:

CARTPRICE: 2
i: 1 (den ligger selv 1 til hver gang jeg går tilbage og ligger en ny vare i
kurven, så denne virker som sådan o.k.)
CARTPQUANTITY: 3
localCart(CARTPPRICE,i): 2
localCart(CARTPQUANTITY,i): 7

Alt i alt nogle lidt mærkelige tal. F.eks. burde CARTPRICE vel være varens
pris i stedet for bare et 2 tal?

> Det er muligt at problemet kan løses med Cdbl omkring andet og
> tredje led i summen.

Jeg ved desværre ikke hvordan man gør det??




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

Månedens bedste
Årets bedste
Sidste års bedste