私はショッピングカートを作っていて、実際のカートにこだわっています。ここでいくつかの質問を読んで試してみましたが、うまくいかないか、まったくのゴミです。
PHP コード: addtocart.php
if(isset($_GET['product_id']) && isset($_GET['qty'])){
$product_id = $_GET['product_id'];
$qty = $_GET['qty'];
$cart = $_SESSION['cart'];
if($cart == null) {
$cart = array();
}
if(!isset($cart[$product_id])) {
$cart[$product_id] = 0;
}
$cart[$product_id] += $qty;
//var_dump($cart);
}
$session->setSetting("cart", $cart);
PHPコード:cart.php
try {
if(empty($_GET)) {
$cart = $session->getSetting("cart");
if($cart == null) {
throw new Exception("Empty cart.");
} else {
$template->setVar("cart", $cart);
} elseif($_GET['action'] == 'empty') {
unset($_SESSION['cart']);
header("location: /cart.php");
}
}
} catch (Exception $e) {
$template->setVar("errmsg", $e->getMessage());
}
出力:
<table class="table table-bordered table-striped table-condensed">
<?php foreach($this->cart as $product_id => $qty):
$item = $this->product->buildTotal($product_id); //var_dump($item);
?>
<tr>
<th>Items</th>
<td><?php echo count($item); ?>
</td>
<tr>
<th>Sub-total</th>
<td>
£<?php echo $price = number_format(($item[0]['product_price'] * $qty), 2); ?>
</td>
</tr>
<tr>
<th>Shipping</th>
<td>
£<?php echo $shipping = "2.95"; ?>
</td>
</tr>
<tr class="warning">
<th>Tax</th>
<td>20%</td>
</tr>
<tr class="success">
<th>Total</th>
<td>£<?php $tax = (($price * 20) / 100);
$total = ($price + $tax + $shipping);
echo number_format($total, 2); ?>
</td>
</tr>
<?php endforeach; ?>
残念ながら、カートの下部にある合計テーブルには、「x」個の製品に対して「x」回が表示されます.2つの製品の例では、異なる価格などを合計するのではなく、テーブルが2回表示されます.私はこれに3日間立ち往生しているので、どんな助けも大歓迎です. また、あなたの答えがうまくいった場合は、カートのクレジット ページにリストします。