Опубликован: 08.05.2007 | Доступ: свободный | Студентов: 12883 / 3013 | Оценка: 4.13 / 3.77 | Длительность: 12:58:00
Дополнительный материал 1:

Приложение PHP E-Commerce

< Лекция 12 || Дополнительный материал 1: 123456789101112 || Дополнительный материал 2 >

Обслуживание корзины покупателя

Страница 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.

< Лекция 12 || Дополнительный материал 1: 123456789101112 || Дополнительный материал 2 >
Максим Матросов
Максим Матросов
Наталья Джабасова
Наталья Джабасова