0

私はショッピングカートを作っていて、実際のカートにこだわっています。ここでいくつかの質問を読んで試してみましたが、うまくいかないか、まったくのゴミです。

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>
        &pound;<?php echo $price = number_format(($item[0]['product_price'] * $qty), 2); ?>
    </td>
</tr>
<tr>
    <th>Shipping</th>
    <td>
        &pound;<?php echo $shipping = "2.95"; ?>
    </td>
</tr>
<tr class="warning">
    <th>Tax</th>
    <td>20%</td>
</tr>
<tr class="success">
    <th>Total</th>
    <td>&pound;<?php $tax = (($price * 20) / 100);
        $total = ($price + $tax + $shipping); 
        echo number_format($total, 2); ?>
    </td>
</tr>
<?php endforeach; ?>

残念ながら、カートの下部にある合計テーブルには、「x」個の製品に対して「x」回が表示されます.2つの製品の例では、異なる価格などを合計するのではなく、テーブルが2回表示されます.私はこれに3日間立ち往生しているので、どんな助けも大歓迎です. また、あなたの答えがうまくいった場合は、カートのクレジット ページにリストします。

4

0 に答える 0