Source of: ../Wda42/new/example.cart.6.php

<?php
/*
Source code example for Web Database Applications

Unless otherwise stated, the source code distributed with this book can be
redistributed in source or binary form so long as an acknowledgment appears
in derived source files.
The citation should list that the code comes from Hugh E.
Williams and David Lane, "Web Database Application with PHP and MySQL"
published by O'Reilly & Associates.
This code is under copyright and cannot be included in any other book,
publication, or educational product without permission from O'Reilly &
Associates.
No warranty is attached; we cannot take responsibility for errors or fitness
for use.
*/
?>
<?php
   
// This script updates quantities in the cart
   // It expects parameters of the form XXX=YYY
   // where XXX is a wine_id and YYY is the new
   // quantity of that wine that should be in the
   // cart
  
   
include 'include.inc';

   
set_error_handler("errorHandler");

   
// Re-establish the existing session
   
session_start();    

   
// Clean up the data, and save the results
   // in an array
   
foreach($_GET as $varname => $value)
      
$parameters[$varname] = clean($value4);

   
// Register a local $order_no
   
$order_no $_SESSION["order_no"];

   
// Did they want to update the quantities?
   // (this should be true except if the user arrives
   // here unexpectedly)
   
if (empty($parameters["update"]))
   {
      
session_register("message");

      
$_SESSION["message"] = "Incorrect parameters to example.cart.6.php";

      
// Redirect the browser back to the calling page
      
header("Location: {$_SERVER["HTTP_REFERER"]}");
      exit;
   }      

   
// Open a connection to the DBMS
   
if (!($connection = @ mysql_connect($hostName
                                     
$username
                                     
$password))) 
      
showerror();

   if (!
mysql_select_db($databaseName$connection))
      
showerror();

   
// If the user has added items to their cart, then
   // the variable order_no will be registered

   // Go through each submitted value and update the cart
   
foreach($parameters as $itemName => $itemValue)
   {
      
// Ignore the update variable
      
if ($itemName != "update")
      {
         
// Does this item's name look like a wine_id?
         
if (ereg("^[0-9]{1,4}$"$itemName))
         {
            
// Is the update value a number?
            
if (ereg("^[0-9]{1,3}$"$itemValue))
            {
               
// If the number is zero, delete the item
               
if ($itemValue == 0)
                  
$query "DELETE FROM items
                            WHERE cust_id = -1
                            AND order_id = 
$order_no
                            AND item_id = 
$itemName";
               else
                 
// otherwise, update the value
                 
$query "UPDATE items
                           SET qty = 
$itemValue
                           WHERE cust_id = -1
                           AND order_id = 
$order_no
                           AND item_id = 
$itemName";

               if (!(@ 
mysql_query ($query$connection)))
                  
showerror();

            } 
// if (ereg("^[0-9]{1,3}$", $itemValue))
            
else
            {
              
session_register("message");
              
$_SESSION["message"] = "There was an error updating your quantities. Try again.";
            }
         } 
// if (ereg("^[0-9]{1,4}$", $itemName))
         
else
         {
           
session_register("message");
           
$_SESSION["message"] = "There was an error updating quantities. Try again.";
         }
      } 
// if ($itemName != "update") 
   
// foreach($parameters as $itemName => $itemValue)

   // The cart may now be empty. Check this.
   
$query "SELECT count(*)
             FROM items
             WHERE cust_id = -1
             AND order_id = 
$order_no";
             
   if (!(
$result = @ mysql_query ($query$connection)))
      
showerror();

   
$row mysql_fetch_array($result);


   
// Are there no items left?
   
if ($row["count(*)"] == 0)
   {
      
// Delete the order
      
$query "DELETE FROM orders 
                WHERE cust_id = -1
                AND order_id = 
$order_no";
            
      if (!(@ 
mysql_query ($query$connection)))
         
showerror();  

      
session_unregister("order_no");
   }

   
// Go back to the cart
   
header("Location: example.cart.2.php");
   exit;
?>


© 2000--2001 Hugh E. Williams and David Lane.
Valid HTML 4.01!