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