2012-01-18 5 views
0

私はしばらくこのことを熟考しており、実行方法を考えることはできません。商品のプロパティをグループ化することはショッピングカートです

問題 - ROW(id_cart、id_session、id_product、product_name、qty_product、cart_price、cart_size、cart_variety、date_added)を使用して各項目をデータベースに格納し、うまく機能しているカート機構を構築しました。しかし、同じid_sessionとid_productを持つテーブルに2つの項目が表示されている場合、現在の出力は素晴らしいです。qty_product、cart_size、cart_variety、およびsub total行に2番目の行を追加する点を除き、product_nameを繰り返さないようにします。

関連するbuild_cart.phpは次のとおりです。これは総量で一緒にそれらを追加するのと同じid_productSUM'your session id'グループの重複行を持つすべての行を選択します

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

$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; 

答えて

0

にあなたの選択を変更します。

Documentation

+0

偉大な応答@realshadow。私は必要な結果を持った回避策を見つけました。私は、スクリプトを洗練する時間があるときに、あなたの方法を実装することを検討するかもしれません。カートのメカニズムは現在[こちら](http://noff-group.com/dev)です。私は思考に興味があります。 – Tom

+0

まず、SQLインジェクションから身を守るようアドバイスします。たとえば、私がこのURLアドレスhttp://noff-group.com/dev/product_details.php?product=11%20UNION%20SELECT%20username,%20password%20FROM%20USERSにアクセスするとどうなるか見てみましょう。私もあなたの製品テーブルをドロップすることができるかもしれません:) – realshadow

+0

ありがとう@realshadow。私たちはそこに着いています。しかし、おそらく早く目を覚ますのは良いことです。 – Tom