Приложение 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.
