Example 13-1. shipping.3 provides an order receipt
<?php include "xtpl.p"; include "include.inc" ; set_error_handler("errorHandler"); function show_HTML_receipt($custID, $orderID, $connection) { // Create a new XTemplate object called $xtpl $xtpl= new XTemplate ("example.shipping.3.xtpl"); // Find customer information $query = "SELECT * FROM customer WHERE cust_id = $custID"; if (!($result = @ mysql_query ($query, $connection))) showerror( ); // There is only one matching row $row = @ mysql_fetch_array($result); // Assign the orderId to the template $xtpl->assign("ORDER_ID", $orderID); // Assign the customer data to the template $xtpl->assign("CUSTOMER", $row); // Parse the template data $xtpl->parse("main.customer"); $orderTotalPrice = 0; // list the particulars of each item in the order $query = "SELECT i.qty, w.wine_name, i.price, w.wine_id, w.year, wi.winery_name FROM items i, wine w, winery wi WHERE i.cust_id = $custID AND i.order_id = $orderID AND i.wine_id = w.wine_id AND w.winery_id = wi.winery_id ORDER BY item_id"; if (!($result = @ mysql_query ($query, $connection))) showerror( ); // Add each item to the email while ($row = @ mysql_fetch_array($result)) { // Work out the cost of this line item $itemsPrice = $row["qty"] * $row["price"]; $orderTotalPrice += $itemsPrice; $wineDetail = showWine($row["wine_id"], $connection); // Assign the qty, wine details, price, and // total item cost to the template $xtpl->assign("QTY", $row["qty"]); $xtpl->assign("WINE", $wineDetail); $xtpl->assign("PRICE", sprintf("%-.2f", $row["price"])); $xtpl->assign("TOTAL", sprintf("%-.2f", $itemsPrice)); // Parse a template row of items $xtpl->parse("main.items.row"); } // Assign the order total to the template $xtpl->assign("ORDER_TOTAL", sprintf("%-.2f", $orderTotalPrice)); // parse all items $xtpl->parse("main.items"); // parse the whole document $xtpl->parse("main"); // output the templated data $xtpl->out("main"); } // Main ---------- // Re-establish the existing session session_start( ); // Check if the user is logged in if (!session_is_registered("loginUsername")) { session_register("message"); $message = "You must login to view your receipt."; // Redirect the browser back to the login page header("Location: example.order.1.php"); exit; } // Check the correct parameters have been passed // unless the script is run correctly if (!isset($custID) || !isset($orderID)) { session_register("message"); $message = "Incorrect parameters to " . "example.shipping.3.php"; header("Location: $HTTP_REFERER"); exit; } // Check this customer matches the custID if ($custID != getCustomerID($loginUsername, NULL)) { session_register("message"); $message = "You can only view your own receipts!"; header("Location: example.order.1.php"); exit; } // Open a connection to the DBMS if (!($connection = @ mysql_pconnect($hostName, $username, $password))) showerror( ); if (!mysql_select_db($databaseName, $connection)) showerror( ); // Show the confirmation HTML page show_HTML_receipt($custID, $orderID, $connection); ?>
by
updated