chrispc T'es tendue Natasha ! | 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 :
- 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 ma table.
Merci d'avance !!!! ---------------
L'écoconception n'est pas négociable - Topic habitats de demain : https://tinyurl.com/y5h2mjx7
|