2012-01-22 43 views
7

Tôi đang tạo trang web có giỏ hàng. Tôi không cần bất kỳ chức năng đặc biệt nào, vì vậy tôi đang tự tạo giỏ hàng thay vì tích hợp bất kỳ thứ gì sẵn sàng. Sản phẩm của tôi không có giá được xác định trước trong cơ sở dữ liệu. Giá được tạo tự động dựa trên các giá trị do người dùng nhập trên trang sản phẩm. Vì vậy, người dùng chọn một số thông số kỹ thuật, đi vào số lượng và tôi nhận được các giá trị sau:

Item ID
Số lượng
Tổng giá

tôi cần phải lưu trữ những giá trị trong vòng lặp $ _SESSION biến và sau đó qua nó khi cần thiết để có được kết quả và in chúng trong giỏ mua hàng. Vấn đề là có rất nhiều sản phẩm và tôi cần lưu trữ tất cả các giá trị đó (Số lượng, Tổng giá) một cách rõ ràng cho sản phẩm đã chọn. Điều đó nói rằng, làm cách nào để lưu trữ ID mặt hàng, Số lượng và Tổng giá trong biến $ _SESSION và liên kết các giá trị đó với nhau?

Cảm ơn bạn đã trợ giúp.

EDIT: Mã của tôi thực hiện lời đề nghị của Michael:

$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

mảng đa chiều đơn giản sẽ thực hiện. –

+1

'$ _SESSION []' chính nó là một mảng. bạn cũng có thể lưu trữ các mảng vào nó. – Joseph

Trả lời

11

Sử dụng ID item như một chìa khóa mảng, mà giữ một mảng của các mặt hàng khác:

// 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... 

Và truy cập chúng như:

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

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

Cảm ơn Michael! Tuy nhiên, điều này sẽ xóa các giá trị hiện tại trong biến $ _SESSION. Giả sử, tôi đã thêm một tập hợp các giá trị với $ itemID = 29 và sau đó khi tôi thêm một giá trị khác có $ itemID = 30 biến $ _SESSION của tôi chỉ chứa tập dữ liệu cuối cùng. – cycero

+0

@cycero Không phải như vậy. '$ _SESSION ['items']' là một mảng. Mỗi lần bạn thêm một mục vào nó với '$ _SESSION ['items'] [$ newitemID]' bạn đang thêm vào mảng, không ghi đè lên mục trước đó. –

+0

Khi tôi làm một print_r đơn giản ($ _ SESSION), nó chỉ in tập hợp giá trị cuối cùng, không phải tất cả. – cycero

Các vấn đề liên quan