Приложение PHP E-Commerce
Обслуживание корзины покупателя
Страница shopcart.php предоставляет заказчику доступ к объектам корзины покупателя. Она суммирует его покупки, позволяет изменить заказанное количество и является переходом к оформлению заказа. При программировании этой страницы существуют некоторые сложности, поэтому будьте внимательны.
Вывод корзины покупателя
Следующий код создает вывод корзины покупателя. Этот код появляется в основном разделе страницы, чтобы создать приведенный выше вывод. Отметим, что весь раздел включает форму, которая пересылается снова на эту же страницу, чтобы можно было изменить заказанное количество единиц товара.
<div style="position:absolute; top:75px; left:200px; width:550px"> <form name="ShopCart" action="shopcart.php" method="post"> <span class="head1">Shopping Cart</span><br> <br> <span class="head4">Date: </span><?php echo date('n/d/y')?><br> <span class="head4">Order No: </span><?php echo $_SESSION[OrderNo] ?><br> <table border="0"> <tr> <th>Item Number</th> <th>Title</th> <th>Quantity</th> <th>Price</th> <th>Amount</th> </tr> <tr> <td colspan="4" style="text-align:right">Shipping </td> <td style="text-align:right">$<?php echo number_format($OrderShipping,2) ?></td> </tr> <tr> <th colspan="4" style="text-align:right">Order Total </th> <td style="border-style:solid"><b>$<?php echo number_format($OrderTotal,2) ?></b></td> </tr> </table> <?php if($OrderTotal != 0) { ?> <div style="width:375px; line-height:8pt"> <input type="submit" name="UpdateButton" class="buttonM" style="float:left; margin-right:5px" value="Update" onMouseOver="OverMouse(this)"; onMouseOut="OutMouse(this)"> <span class="small">Click to update changed quantities. Enter new quantity or enter 0 to cancel purchase of item. (Щелкните, чтобы обновить измененные количества. Введите новое количество или введите 0, чтобы отменить покупку товара.)</span> </div> <?php } ?> </form> <?php if ($OrderTotal != 0) { ?> <div style="width:375px; line-height:8pt"> <form action="http://.../creditcheck.php" method="post"> <input type="hidden" name="ReturnURL" value="http://.../ordercapture.php"> <input type="hidden" name="CompanyID" value="softWarehouse.com"> <input type="hidden" name="CustomerID" value="<?php echo $_SESSION[OrderNo]?>"> <input type="hidden" name="Amount" value="<?php echo $OrderTotal ?>"> <input type="submit" name="CheckoutButton" class="buttonM" style="float:left;margin-right:5px" value="Checkout" onMouseOver="OverMouse(this)"; onMouseOut="OutMouse(this)"> <span class="small">Click to finalize on-line purchase through secure connection to Credit Payment Systems. Щелкните здесь, чтобы оформить онлайн покупку через безопасное соединение с системой оплаты по кредитным картам.</span> </form> </div> <?php } ?> </div>Пример I.12.
Первая часть кода создает заголовки страницы и заголовки таблицы для списка корзины покупателя. Вместе с номером заказа покупателя, который содержится в переменной $_SESSION[OrderNo], выводится текущая системная дата
Извлечение объектов корзины покупателя
Объекты в корзине покупателя заказчика соответствуют номеру заказа и извлекаются с помощью следующей команды SQL:
$sql="SELECT OrderItem, OrderQuantity FROM ShopCart WHERE OrderNo = '$_SESSION[OrderNo]'";
Получаемое множество записей $rsCart содержит для каждой записи два выбранных поля OrderItem и OrderQuantity. Эти поля присваиваются переменным. Два других поля в записях ( OrderNo и OrderDate ) не требуются для нашей цели. Теперь необходимо выполнить итерации по записям и создать таблицу строк с выбранными объектами.
Однако мы еще не получили всю информацию, которая выводится в строке. Кроме OrderItem и OrderQuantity, содержащихся в корзине покупателя, таблица выводит название товара и его цену. Эти значения находятся в таблице Products. Поэтому эти поля ItemTitle и ItemPrice извлекают для соответствующего продукта, создавая множество записей $rsProd и выполняя оператор SQL.
$sqlProd = "SELECT ItemTitle, ItemPrice FROM Products WHERE ItemNumber = '$OrderItem'";
Эти значения также присваиваются переменным.
Для каждой выводимой строки объекта выводится также объем покупки. Переменная $OrderAmount вычисляется умножением заказанного количества ( $OrderQuantity ) на цену продукта ( $OrderPrice ). Также, когда сценарий выполняет итерации по записям корзины покупателя, значение $OrderTotal накапливается путем сложения по очереди всех $ItemAmount. Отметим, что переменная OrderTotal инициализируется как 0 перед началом цикла вывода.
Теперь собрана вся информация, необходимая для вывода строки таблицы:
echo "<tr> <td>$OrderItem </td> <td>$OrderTitle</td> <td><input type=\"text\" name=\"Q$OrderItem\" size=\"2\" class=\"qtybox\" value=\"$OrderQuantity\"></td> <td style=\"text-align:right\">$$OrderPrice</td> <td style=\"text-align:right\">$$OrderAmount</td> </tr>";
Мы выводим значения переменных, содержащих извлеченные из таблиц ShopCart и Products данные и вычисленный объем. В случае объектов $OrderPrice и $OrderAmount используется функция PHP number_format(), чтобы вывести значения в формате с двумя десятичными позициями после запятой. Теперь надо объяснить, что происходит с полем OrderQuantity.