2012-01-22 5 views
7

장바구니가있는 사이트를 만들고 있습니다. 특별한 기능이 필요하지 않으므로 준비가되어있는 제품을 통합하는 것보다 직접 카트를 만들 수 있습니다. 내 제품에는 데이터베이스에 미리 정의 된 가격이 없습니다. 가격은 제품 페이지의 사용자가 입력 한 값을 기반으로 동적으로 생성됩니다. 따라서, 사용자는 일부 사양을 선택 수량을 입력하고 난 다음 값을 얻을 :

항목 ID
수량
총 가격 나는 $ _SESSION 변수 다음 루프에서 그 값을 저장할 필요가

결과를 얻고 장 Y 구니에 인쇄 할 때 필요할 때. 문제는 많은 제품이 있고 선택한 제품에 대해 모든 값 (수량, 총 가격)을 고유하게 저장해야한다는 것입니다. 즉, $ _SESSION 변수에 Item ID, Quantity 및 Total 가격을 저장하고이 값들을 서로 연관시키는 방법은 무엇입니까?

도와 주셔서 감사합니다.

편집 :

$itemid = $db->escape($_POST['productid']); 
    $itemquantity = $db->escape($_POST['itemquantity']); 
    $totalprice = $db->escape($_POST['totalprice']); 

    $_SESSION['items'] = array(); 

    $_SESSION['items'][$itemid] = array('Quantity' => $itemquantity, 'Total' => $totalprice); 

    var_dump($_SESSION); 
+0

단순한 다차원 배열을 사용하면됩니다. –

+1

'$ _SESSION []'자체는 배열입니다. 배열을 저장할 수도 있습니다. – Joseph

답변

11

이 다른 항목의 배열 보유하고 배열의 키와 같은 항목의 ID를 사용하여 :

// Initialize the session 
session_start(); 

// Parent array of all items, initialized if not already... 
if (!isset($_SESSION['items']) { 
    $_SESSION['items'] = array(); 
} 

// Add items based on item ID 
$_SESSION['items'][$itemID] = array('Quantity' => $quantity, 'Total' => $total); 
// Another item... 
$_SESSION['items'][$another_itemID] = array('Quantity' => $another_quantity, 'Total' => $another_total); 
// etc... 

을 그리고 그들을 액세스 : 내 코드가 마이클의 제안을 구현

// For item 12345's quantity 
echo $_SESSION['items'][12345]['Quantity']; 

// Add 1 to quantity for item 54321 
$_SESSION['items'][54321]['Quantity']++; 
+0

감사합니다. Michael! 그러나 이것은 $ _SESSION 변수의 기존 값을 지 웁니다. 예를 들어 $ itemID = 29로 한 세트의 값을 추가 한 다음 $ itemID = 30으로 다른 값을 추가하면 my $ _SESSION 변수에 마지막 데이터 세트 만 포함됩니다. – cycero

+0

@cycero 그렇지 않습니다. '$ _SESSION [ 'items']'배열입니다. '$ _SESSION [ 'items'] [$ newitemID]'항목을 추가 할 때마다 배열에 추가하고 이전 것을 덮어 쓰지 않습니다. –

+0

간단한 print_r ($ _ SESSION)을 수행하면 모든 값이 아닌 마지막 값 세트 만 인쇄됩니다. – cycero

관련 문제