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 :

Caddie en PHP : changement de la quantité non pris en compte


Sujet :

Langage PHP

  1. #1
    Membre actif

    Inscrit en
    Août 2005
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 401
    Points : 228
    Points
    228
    Par défaut Caddie en PHP : changement de la quantité non pris en compte
    Bonjour à tous,

    Aujourd'hui j'ai un petit problème qui est que quand j'ajoute dans mon panier, je n'arrive pas à augmenter la quantité si on clique deux fois sur le même produit.

    Hum, si vus d'ailleurs des idées pour un bon caddies en ligne dites moi.

    je prend toutes les idées

    Mon caddie:

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    <?php
    session_start();
     
    $_SESSION['panier'][]=array("ref","qte");
     
    $action=$_GET['action'];
     
    if($action==1) {
    //on ajoute
     
    $_SESSION['panier'][]=array("ref"=>$_GET['ref'],"qte"=>$_GET['qte']);
     
    }
    else if($action==2) {
    //on vide le panier
     
    session_destroy();
     
    header("Location: index.php");
    }
     
    echo '<a href="index.php?action=1&ref=citron&qte=2">ajout 2 citron</a><br><br>';
    echo "<br><a href=\"index.php?action=2\">Vider panier</a>";
     
     
    for($i=0;$i<count($_SESSION['panier']);$i++) {
    echo ''.$_SESSION['panier'][$i]['ref'].' '.$_SESSION['panier'][$i]['qte'].' <br>';
     
    }
     
     
    ?>

    Actuellement, quand on clique deux fis sur le mêmeproduits il s'ajoute sur une autre ligne du tableau.
    Je voudrais que quand la référence est la même cela augmente seulement la quantité et non que cela ajoute une ligne avec des doublons.

    J'espère me faire comprendre et que votre aide sera précieuse.

    Amicalement akrogamers

    EDIT:
    J'ai tenté ceci:

    En algo:
    -on parcours ma session pour voir si un produit existe déjà
    -Si il existe on ajoute la quantité supplémentaire.
    -Sinon on ajoute dans le tableau

    En code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $i=0;
    while($i<count($_SESSION['panier'])) {
            if($_SESSION['panier'][$i]['ref']==$_GET['ref']) {
                    $_SESSION['panier'][$i]=array("ref"=>$_GET['ref'],"qte"=>$_SESSION['panier'][$i]['qte']+$_GET['qte']);
            }
            else {
                    $_SESSION['panier'][]=array("ref"=>$_GET['ref'],"qte"=>$_GET['qte']);
            }
    }

    Bon cela ne marche pas mais j'ai la méthode

    EDIT: Merci à l'admin d'avoir modifié le titre c'est plus pertinent.

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Bonjour,

    Une piste :
    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
    <?php
      session_start();
     
      $ref = '123ABC';
      $qte = 2;
     
      if (!isset($_SESSION['panier']))
      {
        $_SESSION['panier'] = array();
      }
     
      if (!isset($_SESSION['panier'][$ref]))
      {
        $_SESSION['panier'][$ref] = 0;
      }
     
      $_SESSION['panier'][$ref] += $qte;
     
      print_r($_SESSION['panier']);
    ?>

  3. #3
    Membre actif

    Inscrit en
    Août 2005
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 401
    Points : 228
    Points
    228
    Par défaut
    Hum, je dois t'avouer que je n'ai pas trop comprit...

    Si tu pouvais m'expliquer un petit peu...

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Ton code modifié, avec des commentaires :
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    <?php
      session_start();
     
      //-- s'il n'y a pas d'action dans l'url, on ne fait rien -------------
      if (isset($_GET['action']))
      {
        //-- si action est défini, mais pas le tableau, on l'initialise ------------
        if (!isset($_SESSION['panier']))
        {
          $_SESSION['panier'] = array();
        }
     
        $action = $_GET['action'];
     
        if($action == 1)     
        {
          //-- on utilise la référence produit comme indice du tableau et la qté comme valeur --
          //-- si cet indice n'est pas défini, on l'initialise avec une qté à 0 -------------
          if (!isset($_SESSION['panier'][$_GET['ref']]))
          {
            $_SESSION['panier'][$_GET['ref']] = 0;
          }
          //-- et ensuite, on ajoute la nouvelle qté ------------------------
          $_SESSION['panier'][$_GET['ref']] += $_GET['qte'];   
        }
        else if($action==2) 
        {
          //-- on vide le panier ---------------
          unset($_SESSION['panier']);
          //-- on détruit la session -------------
          session_destroy();
     
          header("Location: index.php");
        }
      }
     
      echo '<a href="test.php?action=1&ref=citron&qte=2">ajout 2 citron</a><br>';
      echo '<a href="test.php?action=2">Vider panier</a><br><br>';
     
      //-- si le panier est défini, on affiche -------------------------- 
      if (isset($_SESSION['panier']))
      {
        foreach ($_SESSION['panier'] as $ref => $qte)
        {
          echo $ref . ' => ' . $qte . '<br>';
        }
      }
    ?>

  5. #5
    Membre actif

    Inscrit en
    Août 2005
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 401
    Points : 228
    Points
    228
    Par défaut
    Ah d'accord je me trompais car je prenais pas la ref en tant qu'identifiant des quantités. Merci pour cette explication bonne fin de journée a toi

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

Discussions similaires

  1. PHP en CLI : accents non pris en compte
    Par supertino7 dans le forum Langage
    Réponses: 2
    Dernier message: 27/04/2010, 15h41
  2. [MySQL] Mysql/PHP $_Get non pris en compte
    Par Unreal Time dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 17/10/2009, 09h18
  3. Réponses: 2
    Dernier message: 29/07/2008, 12h42
  4. [réglé]changement d'état d'un radio bouton non pris en compte!
    Par leprogrammeurfou dans le forum ASP.NET
    Réponses: 2
    Dernier message: 12/06/2008, 14h32
  5. Changement de l'imprimante par défaut non pris en compte
    Par KRis dans le forum Composants VCL
    Réponses: 2
    Dernier message: 20/05/2008, 12h10

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