Newsgroup: it.comp.lang.perl
Titolo: Carrello...

Mi servirebbe un semplice sistema tipo carrello che prelevi i dati presenti
in un database e li metta a disposizione per poterli acquistare. Il carrello
deve ovviamente indicare il prezzo finale.Non mi interessa che ci siano
sistemi per il pagamento ma semplicemente, una volta che il carrello è pieno
si possa acquistare con un semplice click. Dopo il click naturalmente mi
dovrebbe arrivare un messaggio con tutti gli articoli che hanno richiesto!
C'è qualcuno che mi può aiutare??
Grazie mille!
Francesca

Scusate in aggiunta al messaggio precedente vi mando il codice del carrello
che vorrei utilizzare...ma nel codice non è previsto l'uso del
database...che nel mio caso è necessario!
Potete dirmi come modificare il codice affinchè il carrello prenda le
informazioni da un database e dopo l'acquisto mi invii qualcosa in email??
Grazie a tutti
Francesca
<html>
<head>
 <title>Guestbook v1.0 by: Premier-Design.Com</title>
</head>
<body bgcolor="#FFFFFF" text="#000000" link="#800000" vlink="#808080"
alink="#800000" leftmargin=0 topmargin=0>
<% ' ***** Begin the functions to be called by the runtime script *****
' To find the actual runtime code scroll WAY DOWN....
' This function is written to enable the adding of multiples of an item
' but this sample always just adds one.  If you wish to add different
' quantities simply replace the value of the Querystring parameter count.
' We didn't do this because we wanted to keep the whole thing simple and
' not get into using forms so it stayed relatively readable.
Sub AddItemToCart(iItemID, iItemCount)
  If dictCart.Exists(iItemID) Then
  dictCart(iItemID) = dictCart(iItemID) + iItemCount
 Else
  dictCart.Add iItemID, iItemCount
 End If
 Response.Write iItemCount & " of item # " & iItemID & " have been added to
your cart.<BR><BR>" & vbCrLf
End Sub
Sub RemoveItemFromCart(iItemID, iItemCount)
  If dictCart.Exists(iItemID) Then
  If dictCart(iItemID) <= iItemCount Then
   dictCart.Remove iItemID
  Else
   dictCart(iItemID) = dictCart(iItemID) - iItemCount
  End If
  Response.Write iItemCount & " of item # " & iItemID & " have been removed
from your cart.<BR><BR>" & vbCrLf
 Else
  Response.Write "Couldn't find any of that item your cart.<BR><BR>" &
vbCrLf
 End If
End Sub
Sub ShowItemsInCart()
Dim Key
Dim aParameters ' as Variant (Array)
Dim sTotal, sShipping
 %>
 <TABLE Border=1 CellPadding=3 CellSpacing=1>
     <TR>
   <TD>Codice Prodotto</TD>
   <TD>Descrizione</TD>
   <TD>Quantità</TD>
   <TD>Rimuovi il prodotto</TD>
   <TD>Prezzo</TD>
   <TD>Totale</TD>
     </TR>
 <%
 sTotal = 0
 For Each Key in dictCart
  aParameters = GetItemParameters(Key)
  %>
  <TR>
   <TD ALIGN="Center"><%= Key %></TD>
   <TD ALIGN="Left"><%= aParameters(1) %></TD>
   <TD ALIGN="Center"><%= dictCart(Key) %></TD>
   <TD ALIGN="Left"><A HREF="./shopping.asp?action=del&item=<%= Key
%>&count=1">Rimuovi
              1</A>&nbsp;&nbsp;<A HREF="./shopping.asp?action=del&item=<%=
Key %>&count=<%= dictCart(Key) %>">Rimuovi
              tutti</A></TD>
   <TD ALIGN="Right">£<%= aParameters(2) %></TD>
   <TD ALIGN="Right">£<%= FormatNumber(dictCart(Key) *
CSng(aParameters(2)),2) %></TD>
  </TR>
  <%
  sTotal = sTotal + (dictCart(Key) * CSng(aParameters(2)))
 Next
 'Calculate shipping - you might want to pull this out into a function if
your shipping
 ' calculations are more complicated then ours.  ;)
 If sTotal <> 0 Then
  sShipping = 7.5
 Else
  sShipping = 0
 End If
 sTotal = sTotal + sShipping
 %>
 <TR><TD COLSPAN=5 ALIGN="Right">&nbsp;</TD><TD
ALIGN="Right">&nbsp;</TD></TR>
 <TR><TD COLSPAN=5 ALIGN="Right"><B>Totale:</B></TD><TD ALIGN="Right">£<%=
FormatNumber(sTotal,2) %></TD></TR>
 </TABLE>
 <%
End Sub %>
 <!-- #include file=config.asp -->
<%
Sub ShowFullCatalog()
Dim aParameters ' as Variant (Array)
Dim I
Dim iItemCount ' Number of items we sell
 ' If you are really going to use this sample this should probably be pulled
from a DB
 iItemCount = 3
 %>
 <TABLE Border=1 CellPadding=3 CellSpacing=1>
     <TR>
         <TD>Immagine</TD>
         <TD>Descrizione</TD>
         <TD>Prezzo</TD>
         <TD>Add Item To Cart</TD>
     </TR>
 <%
 For I = 1 to iItemCount
  aParameters = GetItemParameters(I)
  %>
     <TR>
         <TD><IMG SRC="<%= aParameters(0) %>"></TD>
         <TD><%= aParameters(1) %></TD>
         <TD>£<%= aParameters(2) %></TD>
         <TD><A HREF="./shopping.asp?action=add&item=<%= I %>&count=1">Add
this to my cart!</A></TD>
     </TR>
  <%
 Next 'I
 %>
 </TABLE>
 <%
End Sub
Sub PlaceOrder()
Dim Key
Dim aParameters ' as Variant (Array)
Dim sTotal, sShipping
 %>
 <TABLE Border=1 CellPadding=3 CellSpacing=1>
     <TR>
         <TD>Codice Prodotto</TD>
         <TD>Descrizione</TD>
   <TD>Quantità</TD>
         <TD>Prezzo</TD>
   <TD>Totale</TD>
     </TR>
 <%
 sTotal = 0
 For Each Key in dictCart
  aParameters = GetItemParameters(Key)
  %>
  <TR>
   <TD ALIGN="Center"><%= Key %></TD>
   <TD ALIGN="Left"><%= aParameters(1) %></TD>
   <TD ALIGN="Center"><%= dictCart(Key) %></TD>
   <TD ALIGN="Right">£<%= aParameters(2) %></TD>
   <TD ALIGN="Right">£<%= FormatNumber(dictCart(Key) *
CSng(aParameters(2)),2) %></TD>
  </TR>
  <%
  sTotal = sTotal + (dictCart(Key) * CSng(aParameters(2)))
 Next
 'Calculate shipping - you might want to pull this out into a function if
your shipping
 ' calculations are more complicated then ours.  ;)
 If sTotal <> 0 Then
  sShipping = 7.5
 Else
  sShipping = 0
 End If
 sTotal = sTotal + sShipping
 %>
 <TR><TD COLSPAN=4 ALIGN="Right">&nbsp;</TD><TD
ALIGN="Right">&nbsp;</TD></TR>
 <TR><TD COLSPAN=4 ALIGN="Right"><B>Totale:</B></TD><TD ALIGN="Right">£<%=
FormatNumber(sTotal,2) %></TD></TR>
 </TABLE>
 <%
End Sub
' We implemented this this way so if you attach it to a database you'd only
need one call per item
Function GetItemParameters(iItemID)
Dim aParameters ' Will contain 3 string values : image path, description,
price
    ' However we need to keep price so it can be converted to a
    ' single for computation hence no currency symbol.  This array
    ' can also be expanded to contain any other information about the
    ' product that you might want to pull from the DB.
 Select Case iItemID
  Case 1
   aParameters = Array("./images/shop_shirt.gif", "ASP 101 T-Shirt",
"15.00")
  Case 2
   aParameters = Array("./images/shop_kite.gif", "ASP 101 Kite", "17.50")
  Case 3
   aParameters = Array("./images/shop_watch.gif", "ASP 101 Watch", "35.00")
  Case 4 ' Not in use because we couldn't draw a pen in a few seconds!
   aParameters = Array("./images/shop_pen.gif", "ASP 101 Pen", "5.00")
 End Select
' Return array containing product info.
GetItemParameters = aParameters
End Function
%>
<% ' ***** Begin the infamous runtime script *****
' Declare our Vars
Dim dictCart ' as dictionary
Dim sAction ' as string
Dim iItemID ' as integer
Dim iItemCount ' as integer
' Get a reference to the cart if it exists otherwise create it
If IsObject(Session("cart")) Then
 Set dictCart = Session("cart")
Else
 ' We use a dictionary so we can name our keys to correspond to our
 ' item numbers and then use their value to hold the quantity.  An
 ' array would also work, but would be a little more complex and
 ' probably not as easy for readers to follow.
 Set dictCart = Server.CreateObject("Scripting.Dictionary")
End If
' Get all the parameters passed to the script
sAction = CStr(Request.QueryString("action"))
iItemID = CInt(Request.QueryString("item"))
iItemCount = CInt(Request.QueryString("count"))
%>
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
<TR><TD>
<%
' Select action based on user input
Select Case sAction
 Case "add"
  AddItemToCart iItemID, iItemCount
  ShowItemsInCart
  %>
  </TD></TR>
  <TR><TD ALIGN="right">
  <A HREF="./shopping.asp?action="><IMG SRC="./images/shop_look.gif"
BORDER=0 WIDTH=46 HEIGHT=46 ALT="Continua a comprare"></A>
  <A HREF="./shopping.asp?action=checkout"><IMG
SRC="./images/shop_checkout.gif" BORDER=0 WIDTH=46 HEIGHT=46
ALT="Checkout"></A><BR>
  <%
 Case "del"
  RemoveItemFromCart iItemID, iItemCount
  ShowItemsInCart
  %>
  </TD></TR>
  <TR><TD ALIGN="right">
  <A HREF="./shopping.asp?action="><IMG SRC="./images/shop_look.gif"
BORDER=0 WIDTH=46 HEIGHT=46 ALT="Continua a comprare"></A>
  <A HREF="./shopping.asp?action=checkout"><IMG
SRC="./images/shop_checkout.gif" BORDER=0 WIDTH=46 HEIGHT=46
ALT="Compra"></A><BR>
  <%
 Case "viewcart"
  ShowItemsInCart
  %>
  </TD></TR>
  <TR><TD ALIGN="right">
  <A HREF="./shopping.asp?action="><IMG SRC="./images/shop_look.gif"
BORDER=0 WIDTH=46 HEIGHT=46 ALT="Continue Looking"></A>
  <A HREF="./shopping.asp?action=checkout"><IMG
SRC="./images/shop_checkout.gif" BORDER=0 WIDTH=46 HEIGHT=46
ALT="Checkout"></A><BR>
  <%
 Case "checkout"
  PlaceOrder
  %>
  </TD></TR>
  <TR><TD ALIGN="left">
  <BR>
  <H2>Grazie per il tuo ordine!</H2>
  <%
 Case Else ' Shop
  ShowFullCatalog
  %>
        <b><font size="4">Controlla quello che hai già nel
carrello:</font></b>
  </TD></TR>
  <TR><TD ALIGN="right">
  <A HREF="./shopping.asp?action=viewcart"><IMG SRC="./images/shop_cart.gif"
BORDER=0 WIDTH=46 HEIGHT=46 ALT="Controlla il carrello"></A>
  <%
End Select
' Return cart to Session for storage
Set Session("cart") = dictCart
%>
</TD></TR>
</TABLE>
</body>
</html>