par
Ryle » 12 déc. 2019, 16:30
Il y a différentes façon de le faire ... le plus simple est peut être de changer le nom de ta clé dans le tableau "cart_produits" que tu stockes en session. Actuellement c'est uniquement le code produit (qui du coup est remplacé) :
$_SESSION["cart_produits"][ $new_produit['produit_code'] ]
Si tu concatènes celui-ci avec la taille du produit, tu auras un identifiant unique par code et par taille (attention aux impacts que cela peut avoir dans le traitement de ton panier en session par la suite) :
$_SESSION["cart_produits"][ $new_produit['produit_code'] . '/' . $new_produit['produit_taille'] ]
En supposant que $new_produit['produit_taille'] contienne l'information de la taille (et sinon tu peux adapter

)
Tu auras ainsi des "tiroirs" étiquetés "Code/Taille" ce qui évitera de remplacer un article par un autre quand tu en changes la taille...
A noter que tu peux grandement simplifier cette partie du code :
if(isset($_SESSION["cart_produits"])){ // tu regardes s'il y a un panier en session
if(isset($_SESSION["cart_produits"][$new_produit['produit_code']])) // tu regardes si ce panier contient ton produit
{
unset($_SESSION["cart_produits"][$new_produit['produit_code']]); // si c'est le cas, tu supprimes le produit
}
}
// puis tu ajoutes le nouveau produit (au passage, sans t'assurer ici que le panier existe bien en session)
$_SESSION["cart_produits"][$new_produit['produit_code']] = $new_produit;
Il n'est pas nécessaire de supprimer le produit précédent dans la mesure où tu vas le remplacer par le nouveau. Tu peux donc enlever ce contrôle car si le produit existe déjà dans ton panier, il sera automatiquement remplacé, inutile de le supprimer au préalable :
if (isset($_SESSION["cart_produits"])) {
// ajoute ou remplace le produit
$_SESSION["cart_produits"][$new_produit['produit_code']] = $new_produit;
}
Et avec la modification évoquée ci-dessus :
if (isset($_SESSION["cart_produits"])) {
// ajoute ou remplace le produit
$_SESSION["cart_produits"][$new_produit['produit_code'] . '/' . $new_produit['produit_taille'] ] = $new_produit;
}
Il y a différentes façon de le faire ... le plus simple est peut être de changer le nom de ta clé dans le tableau "cart_produits" que tu stockes en session. Actuellement c'est uniquement le code produit (qui du coup est remplacé) : [php]$_SESSION["cart_produits"][ $new_produit['produit_code'] ] [/php]
Si tu concatènes celui-ci avec la taille du produit, tu auras un identifiant unique par code et par taille (attention aux impacts que cela peut avoir dans le traitement de ton panier en session par la suite) : [php]$_SESSION["cart_produits"][ $new_produit['produit_code'] . '/' . $new_produit['produit_taille'] ] [/php]En supposant que $new_produit['produit_taille'] contienne l'information de la taille (et sinon tu peux adapter ;))
Tu auras ainsi des "tiroirs" étiquetés "Code/Taille" ce qui évitera de remplacer un article par un autre quand tu en changes la taille...
A noter que tu peux grandement simplifier cette partie du code :[php]
if(isset($_SESSION["cart_produits"])){ // tu regardes s'il y a un panier en session
if(isset($_SESSION["cart_produits"][$new_produit['produit_code']])) // tu regardes si ce panier contient ton produit
{
unset($_SESSION["cart_produits"][$new_produit['produit_code']]); // si c'est le cas, tu supprimes le produit
}
}
// puis tu ajoutes le nouveau produit (au passage, sans t'assurer ici que le panier existe bien en session)
$_SESSION["cart_produits"][$new_produit['produit_code']] = $new_produit;[/php]
Il n'est pas nécessaire de supprimer le produit précédent dans la mesure où tu vas le remplacer par le nouveau. Tu peux donc enlever ce contrôle car si le produit existe déjà dans ton panier, il sera automatiquement remplacé, inutile de le supprimer au préalable :
[php]if (isset($_SESSION["cart_produits"])) {
// ajoute ou remplace le produit
$_SESSION["cart_produits"][$new_produit['produit_code']] = $new_produit;
}[/php]
Et avec la modification évoquée ci-dessus :
[php]if (isset($_SESSION["cart_produits"])) {
// ajoute ou remplace le produit
$_SESSION["cart_produits"][$new_produit['produit_code'] . '/' . $new_produit['produit_taille'] ] = $new_produit;
}[/php]