8 votes

Stocker plusieurs valeurs dans une variable $_SESSION avec PHP

Je crée un site qui possède un panier d'achat. Je n'ai pas besoin de fonctionnalités spéciales, donc je crée le panier moi-même plutôt que d'intégrer un existant. Mes produits n'ont pas de prix prédéfini dans la base de données. Le prix est généré dynamiquement en fonction des valeurs saisies par un utilisateur sur la page du produit. Ainsi, l'utilisateur choisit certaines spécifications, entre la quantité et j'obtiens les valeurs suivantes :

ID de l'article
Quantité
Prix total

Je dois stocker ces valeurs dans la variable $_SESSION et ensuite les parcourir quand cela est nécessaire pour obtenir les résultats et les afficher dans le panier d'achat. Le problème est qu'il y a beaucoup de produits et j'ai besoin de stocker toutes ces valeurs (Quantité, Prix total) distinctement pour le produit choisi. Cela dit, comment puis-je stocker l'ID de l'article, la Quantité et le Prix total dans la variable $_SESSION et associer ces valeurs les unes aux autres ?

Merci de votre aide.

MODIFICATION : Mon code mettant en œuvre les suggestions 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);

11voto

Michael Berkowski Points 137903

Utilisez l'ID de l'article comme clé de tableau, qui contient un tableau des autres articles :

// Initialiser la session
session_start();

// Tableau parent de tous les articles, initialisé s'il n'est pas déjà...
if (!isset($_SESSION['items']) {
  $_SESSION['items'] = array();
}

// Ajouter des articles en fonction de l'ID de l'article
$_SESSION['items'][$itemID] = array('Quantité' => $quantity, 'Total' => $total);
// Un autre article...
$_SESSION['items'][$another_itemID] = array('Quantité' => $another_quantity, 'Total' => $another_total);
// etc...

Et y accéder comme suit :

// Pour la quantité de l'article 12345
echo $_SESSION['items'][12345]['Quantité'];

// Ajouter 1 à la quantité pour l'article 54321
$_SESSION['items'][54321]['Quantité']++;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X