Source of: example.6-9.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
  
include 'db.inc';
  include 
'error.inc';
  
  
// Give an order discount to a user.
  // First two parameters are the $custId 
  // and the $orderId.
  // Third parameter $discount is the percentage
  // discount to offer.
  // Fourth parameter is a threshold: the discount will
  // only be given if they have spent more than $minimum
  // Fifth parameter is DBMS connection resource
  
function updateDiscount($custId$orderId
                          
$discount$minimum,
                          
$connection)
  {
     
$ok false;

     
// Lock all tables requires in this transaction
     
$query "LOCK TABLES items READ,
               orders WRITE, customer READ"
;

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

     
// Run to query to find out how much a user
     // has spent in this purchase
     
$query "SELECT SUM(price*qty) 
               FROM items, orders, customer
               WHERE customer.cust_id =
                     orders.cust_id 
               AND orders.order_id = items.order_id
               AND items.cust_id = orders.cust_id 
               AND orders.order_id = 
$orderId 
               AND customer.cust_id = 
$custId";

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

     
// Get the $row with the total spent
     
$row mysql_fetch_array($result);

     
// Is the amount spent more than the threshold?
     
if ($row["SUM(price*qty)"] > $minimum)
     {
        
// Yes, so give the customer a discount
        // for this order
        
$query "UPDATE orders 
                  SET discount = 
$discount
                  WHERE cust_id = 
$custId
                  AND order_id = 
$orderId";

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

        
$ok true;
     }

     
// Unlock the tables
     
$query "UNLOCK TABLES";

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

     
// Return whether the discount was given or not
     
return $ok;
  }  

  
// MAIN -----
  
if (!($connection = @ mysql_connect($hostName,
                                      
$username,
                                      
$password)))
     die(
"Could not connect to database");

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

  
// Give a discount of $4.95 to customer 653 on 
  // order #49, if they've spent more then $10
  
$discount updateDiscount(653494.9510$connection);
?>
<!DOCTYPE HTML PUBLIC
   "-//W3C//DTD HTML 4.0 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <title>Discount</title>
</head>
<body bgcolor="white">
<?php
  
if ($discount == true)
     echo 
"<h3>Discount given</h3>";
  else
     echo 
"<h3>Discount not given</h3>";
?>
</body>
</html>


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