2012-01-22 12 views
7

Estoy creando un sitio que tiene un carrito de compras. No necesito ninguna funcionalidad especial, así que estoy creando el carrito por mi cuenta en lugar de integrar uno listo. Mis productos no tienen un precio predefinido en la base de datos. El precio se genera dinámicamente en función de los valores ingresados ​​por un usuario en la página del producto. Por lo tanto, el usuario elige algunas especificaciones, introduce la cantidad y me da los siguientes valores:

Identificación de artículo
Cantidad
Precio total

necesito para almacenar estos valores en el bucle $ _SESSION variable y luego sobre ella cuando sea necesario para obtener los resultados e imprimirlos en el carrito de compras. El problema es que hay muchos productos y necesito almacenar todos esos valores (Cantidad, Precio total) distintivamente para el producto elegido. Dicho esto, ¿cómo almaceno ID de artículo, cantidad y precio total en la variable $ _SESSION y asocio esos valores entre sí?

Gracias por ayudarnos.

EDIT: Mi código de aplicación de las propuestas de 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

matriz multidimensional simple haría. –

+1

'$ _SESSION []' en sí es una matriz. también puedes almacenar arreglos en él. – Joseph

Respuesta

11

utilizar el ID de elemento como una clave de la matriz, que contiene una matriz de los otros artículos:

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

y accede a ellos como:

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

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

¡Gracias Michael! Sin embargo, esto borra los valores existentes en la variable $ _SESSION. Digamos que he agregado un conjunto de valores con $ itemID = 29 y luego, cuando agrego otro con $ itemID = 30, mi variable $ _SESSION contiene solo el último conjunto de datos. – cycero

+0

@cycero No es así. '$ _SESSION ['items']' es una matriz. Cada vez que agrega un elemento a él con '$ _SESSION ['items'] [$ newitemID]' está agregando a la matriz, sin sobreescribir la anterior. –

+0

Cuando hago un simple print_r ($ _ SESSION) imprime solo el último conjunto de valores, no todos. – cycero

Cuestiones relacionadas