Bonjour à tous,

J'ai un problème au niveau de mon panier. Que j'ai 1 ou plusieurs articles dans mon panier, dans ma table details_commande, il ne veut pas me créer autant de ligne qu'il n'y a d'article avec le même id_details_commande qui correspondra à cette même commande.

Voici mon code:

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
49
50
51
    if(isset($_POST['payer']) && $_POST['payer'])
      {
        //boucle qui tourne autant de fois qu'il y a d'articles différents dans le panier :  
        for($i = 0; $i < count($_SESSION['panier']['id_article']) ; $i++)
          //cf. count() équivalent du sizeof() => http://php.net/manual/fr/function.sizeof.php
        {
          $resultat = informationSurUnArticle($_SESSION['panier']['id_article'][$i]);
 
          $article = $resultat->fetch_assoc();
 
          #verification du stock : (on est toujours dans la boucle dont le but est de nous retourner le contenu du panier)
          if($article['stock'] < $_SESSION['panier']['quantite'][$i]) //si le stock actuel est strictement inférieur à la quantité que l'on souhaite commander...=>PROBLEME !!!
          {
            echo '<hr><div class="erreur">Stock restant : ' . $article['stock'] . '</div>';
            echo '<div class="erreur">Quantité demandée : ' .$_SESSION['panier']['quantite'][$i] . '</div>';
 
            if($article['stock'] > 0)
            {
              echo '<div class="erreur">la quantité de l\'article ' . $_SESSION['panier']['id_article'][$i] . ' a été réduite car notre stock était insuffisant. Veuillez vérifier vos achats</div>';
              $_SESSION['panier']['quantite'][$i] = $article['stock'];
            }
            else //rupture de stock : on retire carrément les articles du panier.  
            {
              echo '<div class="erreur">l\'article ' . $_SESSION['panier']['id_article'][$i] . ' a été retiré de votre panier car nous sommes en rupture de stock, veuilliez vérifier vos achats.</div>';
              retirerArticleDuPanier($_SESSION['panier']['id_article'][$i]); //on retire l'article.  
              $i--; //on décrémente pour retirer un article. Lorsque l'on souhaite rajouter une valeur à notre variable on incrémente, ici on souhaite enlever une valeur du coup on décrémente.  
            }
            $erreur = TRUE;
          }
        }
      if(!isset($erreur)) //si $erreur = FALSE => on enregistre le panier.  
      {
     executeRequete("INSERT INTO commande(id_membre,montant,date) VALUES (" . $_SESSION['utilisateur']['id_membre'] . "," . montantTotal() . ", NOW())" );
     //récupération du dernier identifiant auto-généré par l'auto-increment de la BDD
     $id_commande = $mysqli->insert_id;
     //pour tous les articles dans le panier, on observe l'id, la quantité, le prix : on récupère tout pour les placer dans la table details_commande :  
     for($j = 0 ; $j < count($_SESSION['panier']['id_article'][$j]); $j++)
     {
       //ajout des informations dans la table details_commande :  
     executeRequete("INSERT INTO details_commande (id_commande,id_article,quantite,prix) VALUES ($id_commande, ". $_SESSION['panier']['id_article'][$j] . "," . $_SESSION['panier']['quantite'][$j] . ",". $_SESSION['panier']['prix'][$j]. " )" );
 
       //on va faire un update de notre stock : on attribue le nouveau stock  
     executeRequete("UPDATE article SET stock=stock-".$_SESSION['panier']['quantite'][$j] . " WHERE id_article=" . $_SESSION['panier']['id_article'][$j]);
     }
     //paiement par chèque du coup on vide le panier :  
     unset($_SESSION['panier']);
     //envoi mail confirmation achat au client :  
     // mail($_SESSION['utilisateur']['email'],"Confirmation de la commande", "Votre suivi de commande est le suivante : $id_commande","From:confirmation@hus.com" );
     echo "<div class='validation'>Merci pour votre commande. Votre n° de suivi est le $id_commande</div>";
      } 
    }
Si vous voyez le problème... Je tourne en rond depuis 1 semaine et ne comprend pas pourquoi il ne fait pas autant de ligne que je n'ai d'articles dans mon panier.

Merci d'avance !!!!