2012-01-22 42 views
7

我正在創建一個擁有購物車的站點。我不需要任何特殊功能,所以我自己創建購物車,而不是集成任何現成的。我的產品在數據庫中沒有預定義的價格。價格是根據用戶在產品頁面上輸入的值動態生成的。因此,用戶選擇一些規格,進量,我得到以下值:

項目ID
數量
總價

我需要存儲在$ _SESSION變量,然後循環這些值當需要獲得結果並將它們打印在購物車中問題是,有很多產品,我需要爲所選產品顯着存儲所有這些值(數量,總價格)。也就是說,如何將商品ID,數量和總價存儲在$ _SESSION變量中,並將這些值相互關聯?

感謝您的幫助。

編輯:我的代碼實現邁克爾的建議:

$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

簡單的多維數組會做。 – 2012-01-22 20:40:06

+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的值時,我的$ _SESSION變量只包含最後一組數據。 – cycero

+0

@cycero並非如此。 '$ _SESSION ['items']'是一個數組。每次使用'$ _SESSION ['items'] [$ newitemID]將項添加到數組中時,都不會覆蓋前一個項。 –

+0

當我做一個簡單的print_r($ _ SESSION)時,它只打印最後一組值,不是全部。 – cycero