Ajout d'article dans panier avec limite de stock
Ceantolika Messages postés 10 Date d'inscription Statut Membre Dernière intervention -
Bonjour tout le monde ^^
Je vais essayer de faire au plus simple :-D
Sur mon site web statique j'ai ajouter un système de panier basé sur la sessions et sur une base de donnée simple et très peu automatisé.
Notamment pour le stock je le gère a la main dans un champ stock de la table articles
J'ai un bout de code qui permet d'ajouter un article :
case "add": if(!empty($_POST["quantity"])) { $pid=$_GET["pid"]; $result=mysqli_query($con,"SELECT * FROM articles INNER JOIN categorie ON articles.cat = categorie.idcat WHERE id='$pid'"); while($productByCode=mysqli_fetch_array($result)){ $itemArray = array($productByCode["code"]=>array('nom'=>$productByCode["nom"], 'code'=>$productByCode["code"], 'cat'=>$productByCode["cat"], 'stock'=>$productByCode["stock"] ,'quantity'=>$_POST["quantity"], 'prix'=>$productByCode["prix"], 'categorie'=>$productByCode["categorie"], 'image'=>$productByCode["image"])); if(!empty($_SESSION["cart_item"])) { if(in_array($productByCode["code"],array_keys($_SESSION["cart_item"]))) { foreach($_SESSION["cart_item"] as $k => $v) { if($productByCode["code"] == $k) { if(empty($_SESSION["cart_item"][$k]["quantity"])) { $_SESSION["cart_item"][$k]["quantity"] = 0; } $_SESSION["cart_item"][$k]["quantity"] += $_POST["quantity"]; } } } else { $_SESSION["cart_item"] = array_merge($_SESSION["cart_item"],$itemArray); } } else { $_SESSION["cart_item"] = $itemArray; } } } break;
Je cherche tout simplement a ce que le panier virtuel en cour ne puisse pas contenir, par article, plus que mon champ stock.
Voila d'avance merci pour les idées :-)
Windows / Chrome 104.0.0.0
- Ajout d'article dans panier avec limite de stock
- Ajout rapide snap - Forum Snapchat
- Comment enlever la limite d'ajout sur snapchat - Forum Snapchat
- Family link limite quotidienne ne fonctionne pas - Forum Contrôle parental
- Ajout rapide snap - Forum Snapchat
- Je n’arrive plus à ajouter d’amis snap « trop d’amis « - Forum Snapchat
9 réponses
bonjour, as-tu envisagé de comparer la quantité commandée à la quantité en stock?
Oui c'est exactement ce dont j'ai besoin je n'ai aucune idée de comme m'y prendre,
En gros, la, dans ma tete je me dit que $v ne doit pas aller au dessus de la valeur du champ dans la BDD stock ici :
foreach($_SESSION["cart_item"] as $k => $v)
Je n'ai aucune idée de comment faire.
Concrètement il faut que l'ajout dans le panier ne sois pas ou plus possible si $v d'un article donnée est déjà présent a auteur de la valeur max renseigner dans le champ stock.
Je pense que tu peux supprimer cette horrible boucle
foreach($_SESSION["cart_item"] as $k => $v)
Sais-tu que tu peux écrire
$_SESSION["cart_item"][$productByCode["code"]]["quantity"]
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionJe suis étonné par ta boucle while en ligne 5: peux-tu avoir plusieurs lignes en réponse à la requête?
Normalement non si j'interprète bien ce qui est écrit je n'ai qu'une ligne d'un article précis a chaque fois.
J'ai mis ta ligne a la place du foreach, le site ne fonctionne plus lol
Non ce n'est pas mon code,
Je comprend les grande lignes et j'ai des notions très légères,
Si je ne modifie pas ce code je n'ai pas exactement ce que je veux sur mon site.
Du coup je n'y touche pas et je ne fait pas de site.
Question peut être idiote, mais ce forum ne sert a pas a donner des réponses a quelqu'un qui pose des questions ??
Au départ, tu demandais des idées, cela m'a induit en erreur. C'est plus clair si tu expliques que tu ne comprends pas "ton" code, et que tu cherches quelqu'un qui peut l'adapter.
La charte: "Le cadre de l'entraide n'est pas de faire faire les choses par les autres mais d'aider en cas de difficultés."
Non mais sérieusement ^^
Je ne veux pas apprendre ou progresser, je ne suis pas élève et tu n'est pas professeur, je suis a deux doigt de pouvoir mettre mon site en ligne et j'aimerais ne pas passer un temp énorme pour trouver seul la réponse.
Sinon je ne serais pas admin reseau mais dev.
Ca me parait simple, je suis venu sur le forum pour trouver une réponse a ma question pas pour la résoudre tout seul ou pour faire un jeux de piste ^^
Mais bon merci quant même.
Du coup si quelqu'un a le bout de code qui me permet de vérifier cette condition ca serais super sinon tans pis.
C'est bon j'ai trouvé, c'est surement pas très beau ^^ mais si ca peu aider quelq'un :
Je ne suis pas aller du coter de l'action, mais du coter du panier :
<!-- Cart ----> <div id="shopping-cart"> <a id="btnEmpty" href="panier.php?action=empty">Tout supprimer</a> <?php if(isset($_SESSION["cart_item"])){ $total_quantity = 0; $total_price = 0; ?> <table class="tbl-cart" cellpadding="10" cellspacing="1"> <tbody> <tr> <th style="text-align:left;font-size:small;font-weight:700"></th> <th style="text-align:left;font-size:small;font-weight:700">Type</th> <th style="text-align:left;font-size:small;font-weight:700">Nom</th> <th style="text-align:left;font-size:small;font-weight:700">Code</th> <th style="text-align:right;font-size:small;font-weight:700">Quantitée</th> <th style="text-align:right;font-size:small;font-weight:700">Prix unitaire</th> <th style="text-align:right;font-size:small;font-weight:700">Prix</th> <th style="text-align:center;font-size:small;font-weight:700">Retirer</th> </tr> <?php foreach ($_SESSION["cart_item"] as $item){ $item_price = $item["quantity"]*$item["prix"]; if($item["quantity"] > $item["stock"]){ $item["quantity"] = $item["stock"]; $item_price = $item["quantity"]*$item["prix"]; } ?> <tr> <td><img src=""image"]; ?>" class="cart-item-image" /></td> <td><?php echo $item["categorie"]; ?></td> <td><?php echo $item["nom"]; ?></td> <td><?php echo $item["code"]; ?></td> <td style="text-align:right;"><?php echo $item["quantity"]; ?></td> <td style="text-align:right;"><?php echo "€ ".$item["prix"]; ?></td> <td style="text-align:right;"><?php echo "€ ". number_format($item_price,2); ?></td> <td style="text-align:center;"><a href="panier.php?action=remove&code=<?php echo $item["code"]; ?>" class="btnRemoveAction"><p align="center"><img src="" alt="Remove Item" /></p></a></td> </tr> <?php $total_quantity += $item["quantity"]; $total_price += ($item["prix"]*$item["quantity"]); } ?> <tr> <td colspan="4" align="right">Total:</td> <td align="right"><?php echo $total_quantity; ?></td> <td align="right" colspan="2"><strong><?php echo "€ ".number_format($total_price, 2); ?></strong></td> <td></td> </tr> </tbody> </table> <?php } else { ?> <p> </p> <p> </p> <div class="no-records" style="font-size:large;font-weight:800">Votre panier est vide</div> <p> </p> <p> </p> <?php } ?>
J'ai rajouté ces trois lignes après le foreach :
?php foreach ($_SESSION["cart_item"] as $item){ $item_price = $item["quantity"]*$item["prix"]; if($item["quantity"] > $item["stock"]){ $item["quantity"] = $item["stock"]; $item_price = $item["quantity"]*$item["prix"]; } ?>
Elle force le panier en permanence a ne pas pouvoir dépasser la quantité stock et recalcule aussi le prix total par article. Du coup un client dans sa session ne peux pas forcer par un rafraichissement le max d'article dispo.