IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Session et Panier avec plusieurs articles


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 10
    Points : 3
    Points
    3
    Par défaut Session et Panier avec plusieurs articles
    Bonsoir à tous !

    Je travail sur la création d'un système de panier pour mon site marchand grâce aux variables de session.

    Lors de l'ajout d'un article au panier, j'enregistre l'ID de l'article dans une variable de session avec l'id de l'article comme nom et la quantité commandé comme valeur.

    jusqu'à là pas de problème.

    Seulement lorsque je veux afficher mon panier, comment puis je afficher l'article contenu dans ma session sachant que je ne peux pas deviner son ID ??
    Parce que si j'ai bien compris, on peut retrouver la valeur d'une variable de session en l'appelant, mais ici on ne connaitra pas le nom a l'avance, vu que on ne sait pas quels articles va choisir le client, et je ne vais pas faire 200 requêtes pour trouver les variables qui sont enregistrées dans la session..

    Alors peut-être qu'on peu lister les variables de session qui ont été enregistrés ??

    Je m'explique j'ai plus de 200 produits que j'affiche dynamiquement grâce a une BDD mysql.
    Ils portent tous un Id différent, ce qui est logique.

    Ce que je veux arriver a faire, c'est de pouvoir lister les différent (articles (donc les ID) qui ont été enregistrés en tant que variable de SESSION.
    Ce qui donnerai alors le contenu du panier.

    Pouvez vous me donner une solution svp??

  2. #2
    Inscrit
    Avatar de Caerbannog
    Inscrit en
    Novembre 2004
    Messages
    206
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 206
    Points : 273
    Points
    273
    Par défaut
    C'est débile d'utiliser comme index dans la variable $_SESSION un id que tu veux retrouver. $_SESSION est utisable comme presque n'importe quelle variable (ptet pas pour les ressources) donc tu fais par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $_SESSION['panier'] = array();
    $_SESSION['panier'][$id] = $val;
    foreach($panier as $id => $val)
    {
        echo $id . ' : ' . $val;
    }

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Ca marche, mais seulement pour un produit alors ?

    J'ai testé ton script comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php
    session_start();
     
    $id='1432';  //id du produit
    $val='5'; // quantité commandé
     
    $_SESSION['$id'] = '$val'; //enregistrement sur la session
     
    $_SESSION['panier'] = array();
    $_SESSION['panier'][$id] = $val;
    foreach($panier as $id => $val)
    {
        echo $id . ' : ' . $val;
    }
    ?>
    ce qui m'affiche bien

    1432 : 5
    oké c'est super mais si maintenant j'enregistre un deuxième produit, et bien il va forcemetn remplacer la valeur de $id et $var

    Tu comprend mon soucis ?

  4. #4
    Inscrit
    Avatar de Caerbannog
    Inscrit en
    Novembre 2004
    Messages
    206
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 206
    Points : 273
    Points
    273
    Par défaut
    Non capitaine, je ne comprends pas.
    Deux articles ont des ids différents (c'est le principe des ids) donc tu ne risques pas d'écraser l'ancienne valeur puisque tu ajoute un élément dans le tableau à une clé différent
    Et si ça te stresse les clés rajoute les éléments au tableau avec $_SESSION['panierIds'][] et $_SESSION['panierValeurs'][] (parcours avec un for classique) : ça alloue le prochain index libre.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    je te remerci de ton aide précieuse et du temps que tu m'accordes, mais là je butte, et je crois que mon code n'est pas correct, le must serais que tu puisse me faire un exemple simple.

    Car là dans ton code, je définit la variable plus haut et l'enregistre sur la session, mais si je fais la même chose sur une 2éme page avec des valeurs différentes pour la variable et bien ca ne m'affichera pas les 2 mais seulement celle que j'ai défini sur cette 2éme page, et si je vais sur une troisième page où là il n'y a que le code que tu 'mas donné ca ne m'affiche que les " : "


    A mon avis je n'utilise pas la bonne méthode pour l'enregistrement de ma variable sur la session

  6. #6
    Inscrit
    Avatar de Caerbannog
    Inscrit en
    Novembre 2004
    Messages
    206
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 206
    Points : 273
    Points
    273
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <?php
    session_start();
     
    $id='1432';  //id du produit, pourrait être un nombre
    $val='5'; // quantité commandée
     
    // La ligne suivante remet le tableau à zéro, on ne l'utilise que si il n'existe pas
    if(!isset($_SESSION['panier']))
        $_SESSION['panier'] = array(); 
     
    // ajout d'un élément
    $_SESSION['panier'][$id] = $val;
     
    // ajout d'un autre, qui peut se faire sur un autre page
    $_SESSION['panier']['schmurps'] = 2.5;
     
    foreach($panier as $id => $val)
    {
        echo $id . ' : ' . $val;
    }
     
    ?>
    Ton histoire de ":" solitaire est bizzare, remet un ptit coup le tableau à zéro il doit contenir des valeurs suspicieuses.

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Super j'ai compris et ça marche nikel !!

    Merci encore !

    Maintenant une dérniere chose,

    J'aimerais utiliser la liste créé pour enregistrer une commande dans ma BDD lors de l'envoi du formulaire de paiement

    Je connais la requête à faire (je créé une entrée dans la table 'commande' et j'attribue $id et $val au champs respectifs,

    seulement ma requête va prendre qu'une seul ligne sur toute la liste des produits, ou il y aura même des erreurs ?


    Alors si je poste juste '$panier' dans un champ de ma TABLE, ceci va t'il me poster toute la liste des produits ?

    EDIT: j'ai test pour panier et il me renvoi ca valeur de base donc pas bon

    il faudrait que je puisse definir une variable qui englobe tout le tableau généré, comme ca je pourrais envoyer le contenu de cette variable dans ma BDD

  8. #8
    Inscrit
    Avatar de Caerbannog
    Inscrit en
    Novembre 2004
    Messages
    206
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 206
    Points : 273
    Points
    273
    Par défaut
    La plus belle solution est : au moment de sauvegarder dans la bdd, tu parcours le tableau pour générer une requête en mettant plusieurs VALUES( ... ) d'affilée après un même INSERT INTO.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Ajout au panier avec plusieurs tables
    Par Benben1337 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 20/04/2014, 15h48
  2. panier avec plusieur article a paypal
    Par kate59 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 05/01/2012, 15h08
  3. SetExpressCheckout avec plusieurs articles
    Par kate59 dans le forum E-Commerce
    Réponses: 0
    Dernier message: 03/01/2012, 17h19
  4. [PHP 5.0] panier en session avec plusieurs option par article
    Par saperlipopeye dans le forum Langage
    Réponses: 14
    Dernier message: 16/03/2010, 10h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo