Группировка свойств товара - корзина покупок - PullRequest
0 голосов
/ 18 января 2012

Я некоторое время размышлял над этим и не могу понять, как его выполнить.

Проблема - я создал механизм корзины, который работает хорошо и хранит каждый элемент в базе данных с помощью ROW.(id_cart, id_session, id_product, product_name, qty_product, cart_price, cart_size, cart_variety, date_added).Однако текущий вывод отличный, когда в таблице появляются два элемента с одинаковыми id_session и id_product. Я не хочу повторять product_name, за исключением добавления второй строки в строку qty_product, cart_size, cart_variety и sub total.

Связанный build_cart.php выглядит следующим образом:

$display_block = '<div id="heading">Your Order</div>';

// Set cart subtotal to zero
$subtotal = 0;

//check for cart items based on user session id
$get_cart_sql = "SELECT * FROM store_cart WHERE id_session = '".$_COOKIE["PHPSESSID"]."'";
$get_cart_res = mysqli_query($dbConnect, $get_cart_sql) or die(mysqli_error($dbConnect));

if (mysqli_num_rows($get_cart_res) < 1) {
    //print message
    $display_block .= '
    <div id="body"><div style="text-align:center; padding:10px; font-weight:bold;">Your cart is currently empty</div>';
} else {
    //get info and build cart display
    $display_block .= '<div id="body">';

    while ($cart_info = mysqli_fetch_array($get_cart_res)) {
        $id_cart = $cart_info['id_cart'];
        $product_name = stripslashes($cart_info['product_name']);
        $product_price = $cart_info['cart_price'];
        $qty_product = $cart_info['qty_product'];
        $size = $cart_info['cart_size'];
        $variety = $cart_info['cart_variety'];
        $product_total = sprintf("%.02f", $product_price * $qty_product);

        $display_block .= '
        <div>
            <div id="cart_item">'.$product_name.'</div>
            <div id="edit_remove"><a href="cart_remove.php?cartitem='.$id_cart.'">remove</a> | <a href="cart_edit.php?cartitem='.$id_cart.'">edit</a></div>
        </div>
        <br/>
        <br/>
        <div>
            <div id="qty">'.$qty_product.' X '.$size.'</div>
            <div id="cart_price">&#163;'.$product_total.'</div>
        </div>
        <br/>
        <br/>';

        $subtotal += $product_total;

    }

$display_block .= '</div>'; // Here to close "CART EMPTY div

$display_block .= '
<br/>

    <div id="sub_body">

                        <div>
                          <div id="sub_titles">Cart Subtotal</div>
                          <div id="sub_price">&#163;'.$subtotal.'</div>
                        </div>
                        <div>
                          <div id="sub_titles">Delivery</div>
                          <div id="sub_price">FREE</div>
                        <br/>
                        <div>
                          <div id="sub_titles">VAT</div>
                          <div id="sub_price">&#163;'.$subtotal*0.2.'</div>
                        </div>
                        <div>
                          <div id="total">Order Total</div>
                          <div id="total_price">&#163;'.$subtotal*1.2.'</div>
                        </div>                   
    </div>

    <div id="checkout">CHECKOUT</div>';

}

echo $display_block;

1 Ответ

0 голосов
/ 18 января 2012

Изменение вашего выбора на:

SELECT 
    *, SUM(qty_product) AS total_qty
FROM 
    store_cart
WHERE id_session = 'your session id'
GROUP BY id_product

Это выберет все строки с 'your session id' сгруппировать дублирующиеся строки с одинаковыми id_product, а SUM добавит их вместе в общее количество.

Документация для справки

...