
On trouve de nombreux exemples de code montrant la gestion d’un panier de e-commerce avec PHP.
Malheureusement ils sont – à mon avis – toujours un peu trop compliqué alors que le process est finalement très simple.
Il suffit d’avoir un tableau panier[] dont la clef associative est l’identifiant unique de l’article.
Reste le petit souci de la quantité. Celle-ci sera tout simplement associée à une clef associative secondaire : panier[$id][‘quantite’].
Voici ce que ça donne au niveau du code.
3 fichiers sont utilisés :
panier.php pour afficher le contenu du panier
panierfonctions.inc.php pour manipuler (CRUD) le contenu du panier.
parnierRemplir.inc.php juste pour remplir le panier avec des données
panier.php
<?php // La structure de gestion du panier est très simple et très efficace : // $panier[$id] contient un article (ce qu'on veut ; un objet, un tableau ...) // En général cela correspond à un article issu de la base de données // // $panier[$id][qte] indique simplement la quantité // Réalisation via approche procédurale dans un premier temps // juste remplir le panier avec des données include('panierRemplir.inc.php'); //Vérifions var_dump($panier); echo '<hr>'; // Pour test : // l'article ayant pour id 11 voit sa quantité diminuée de 1 // si la quantité de l'article 11 est à zéro alors il est enlevé du panier EnleverQte(11); //Vérifions var_dump($panier); ?>
panierFonctions.inc.php
<?php function AjouterPanier($article, $id=null) { global $panier; // si pas d'id fourni en argument on s'en occupe ! if($id==null) $id = TrouveUnId($panier); if(!isset($panier[$id])) $panier[$id] = array( 'article' => $article, 'qte' =>1); else $panier[$id]['qte']++; // nb : il faudrai tester si l'article est null ET l'id null // et aussi le cas ou l'article est null et l'id à la fois non null et n'existe pas dans le panier } function SupprimerPanier($id) { global $panier; if(isset($panier[$id])) unset($panier[$id]); } function EnleverQte($id) { global $panier; if(!isset($panier[$id])) return; $panier[$id]['qte']--; if($panier[$id]['qte']<=0) unset($panier[$id]); } function ModifierArticlePanier($article, $id=null) { global $panier; if(isset($panier[$id])) $panier[$id]=$article; } function TrouveUnId($panier) { // attention : array_key_last est très pratique mais nécessite PHP 7 >= 7.3.0 // return array_key_last($panier)+1; //Pour php5 $id = end(array_keys($panier)) + 1; return $id; } ?>
(puisque le site est « php8.fr » soulignons la non-utilisation – pour des raisons de compatibilité ascendante- de la fonction array_key_last ☺☺)
panierRemplir.inc.php
<?php include('panierFonctions.inc.php'); $article['nom'] = 'Lampadaire vintage'; $article['prix'] = 8.90; $article['photo'] = '../../lamp.jpg'; AjouterPanier($article); $article['nom'] = 'Avion de luxe'; $article['prix'] =1000000; $article['photo'] = '../../avionlux.jpg'; AjouterPanier($article); $article['nom'] = 'Stylo bille'; $article['prix'] =0.5; $article['photo'] = '../../stylo.jpg'; AjouterPanier($article,$id=10); $article['nom'] = 'Casque audio'; $article['prix'] =20.70; $article['photo'] = '../../kask.jpg'; AjouterPanier($article,$id=11); // on aura un article en quantité 3 AjouterPanier(null,11); AjouterPanier(null,11); ?>
Et c’est terminé ! Trop simple non ?
Evidemment il faudra mettre la variable $panier dans une session etc.
Leave a Reply