2013-04-12 4 views
1
<?php 

session_start(); 
print '<h1>Your Shopping Cart:</h1>'; 
print '<h4>The Product ID: '.$_SESSION['id'].' </h4>'; 
print '<h4>The Quantity: '.$_SESSION['quantity'].' </h4>'; 

$dbc = mysql_connect('127.0.0.1', 'root', ''); 
mysql_select_db('product', $dbc); 

$query = "SELECT * FROM prod WHERE id='".$_SESSION['id']."'"; 



if ($r = mysql_query($query, $dbc)) { 

while ($row = mysql_fetch_array($r)) { 
print "<p><b>Product Name: {$row['name']}<br /> 
      The Price: {$row['price']}<br /> 
      Shipping Cost: {$row['shipping']}<br /> 



</p><hr />\n"; 
}} 
?> 

세션 코드가있는 장바구니에 대한 코드이지만 하나의 제품 만 유지하는 것이 문제입니다. 당신이 제품 A를 구입 장바구니에 담기 상품 B에서 B는 다음 제품을 추가, 삭제하는 경우 예를 들어장바구니 세션 PHP

, 내가 둘 이상의 제품을 추가 할과 ##

답변

2

다른 추가 화면에 인쇄 나에게 도와주세요

$_SESSION['cart'][$productID]['quantity']; 
       ^^^^^^^^^^^^^ 

따라서 제품 별 데이터를 유지해야합니다. 지금은 새로운 제품이 추가 될 때 계속해서 덮어 쓰는 단일 레벨을 사용하고 있습니다.

2

PHP 배열로 인사 : http://www.php.net/manual/en/book.array.php :
기본적으로 대신 :

$_SESSION['id'] = 1234; 

당신이 원하는 것 :

다음
$_SESSION['products'][] = array('id'=>1234, 'quantity'=>10); 

당신이 $ _SESSION 반복합니다 [ '제품']처럼

foreach($_SESSION['products'] AS $product){ 
    echo $product['id']; 
} 
0

단일 세션 변수 $_SESSION['cart']의 예술. 새 제품을 추가 할 때 다음을 사용할 수 있습니다.

$_SESSION['cart'] = array();   //initialize once 
array_push($_SESSION['cart'], array("id" => $id, "quantity" => $q)); 
print_r($_SESSION['cart']); 

이렇게하면 여러 장의 제품을 장바구니에 넣을 수 있습니다.

특정 프레임 워크 인 CodeIgniter의 경우 카트 기능을 제공하는 클래스가 있습니다. 체크 아웃 this.

+1

좋은 디자인이 아닙니다. 제품이 장바구니에 이미있는 경우 중복 장바구니 항목을 만들 것입니다. 카트는 일반적으로 제품의 키로 색인화되어야하므로 제품의 카트 정보를 한 곳에 집중시킬 수 있습니다. –

0
$_SESSION['cart'] = array(); 
$_SESSION['cart']['1'] = 2;//add product A,id=1,quality=2 
$_SESSION['cart']['2'] = 3;//add product B,id=2,quality=3 

//get all items 
foreach($_SESSION['cart'] as $item) 
{ 
    print_r($item); 
}