L’utilisation d’un panier électronique dans un site web e-commerce est devenu obligatoire pour que les internautes puissent ajouter leurs produit dedans et bien gérer son panier.
Nous allons voir dans ce tutoriel comment avoir toutes les fonctions utiles pour créer un panier en php

  1.  
  2. <?php
  3. // ———————————————————————–
  4. // Ajoute un article dans le panier
  5. // ———————————————————————–
  6. function ajout($select){
  7.     $ajout = false;
  8.     if(!isset($_SESSION[‘panier’][‘verrouille’]) || $_SESSION[‘panier’][‘verrouille’] == false){
  9.         if(!verif_panier($select[‘id’])){
  10.             array_push($_SESSION[‘panier’][‘id_article’],$select[‘id’]);
  11.             array_push($_SESSION[‘panier’][‘qte’],$select[‘qte’]);
  12.             array_push($_SESSION[‘panier’][‘taille’],$select[‘taille’]);
  13.             array_push($_SESSION[‘panier’][‘prix’],$select[‘prix’]);
  14.             $ajout = true;
  15.         }
  16.         else{
  17.             $ajout = modif_qte($select[‘id’],$select[‘qte’]);
  18.         }
  19.     }
  20.     return $ajout;
  21. }
  22.  

  1.  
  2. // ———————————————————————–
  3. // Modifie la quantité d’un article dans le panier
  4. // ———————————————————————–
  5. function modif_qte($ref_article, $qte){
  6.     /* On initialise la variable de retour */
  7.     $modifie = false;
  8.     if(!isset($_SESSION[‘panier’][‘verrouille’]) || $_SESSION[‘panier’][‘verrouille’] == false){
  9.         if(nombre_article($ref_article) != false && $qte != nombre_article($ref_article)){
  10.             /* On compte le nombre d’articles différents dans le panier */
  11.             $nb_articles = count($_SESSION[‘panier’][‘id_article’]);
  12.             /* On parcoure le tableau de session pour modifier l’article précis. */
  13.             for($i = 0; $i < $nb_articles; $i++){
  14.                 if($ref_article == $_SESSION[‘panier’][‘id_article’][$i]){
  15.                     $_SESSION[‘panier’][‘qte’][$i] = $qte;
  16.                     $modifie = true;
  17.                 }
  18.             }
  19.         }
  20.         else{
  21.             /* L’article est absent du panier, donc on ne peut pas modifier la quantité ou bien
  22.             * le nombre est exactement le même et il est inutile de le modifier
  23.             * Si l’article est absent, comme on a ni la taille  ni le prix, on ne peut pas l’ajouter
  24.             * Si le nombre est le même, on ne fait pas de changement. On peut donc retourner un autre
  25.             * type de valeur pour indiquer une erreur qu’il faudra traiter à part lors du retour d’appel
  26.             */
  27.             if(nombre_article($ref_article) != false){$modifie = "absent";}
  28.             if($qte != nombre_article($ref_article)){$modifie = "qte_ok";}
  29.         }
  30.     }
  31.     return $modifie;
  32. }
  33.  
  34. // ———————————————————————–
  35. // Supprimer un article du panier après vérification que nous ne somme pas en phase de paiement
  36. // ———————————————————————–
  37. function supprim_article($ref_article){
  38.     $suppression = false;
  39.     if(!isset($_SESSION[‘panier’][‘verrouille’]) || $_SESSION[‘panier’][‘verrouille’] == false){
  40.         /* On vérifie que l’article à supprimer est bien présent dans le panier */
  41.         if(nombre_article($ref_article) != false){
  42.             /* création d’un tableau temporaire de stockage des articles */
  43.             $panier_tmp = array("id_article"=>array(),"qte"=>array(),"taille"=>array(),"prix"=>array());
  44.             /* Comptage des articles du panier */
  45.             $nb_articles = count($_SESSION[‘panier’][‘id_article’]);
  46.             /* Transfert du panier dans le panier temporaire */
  47.             for($i = 0; $i < $nb_articles; $i++){
  48.                 /* On transfère tout sauf l’article à supprimer */
  49.                 if($_SESSION[‘panier’][‘id_article’][$i] != $ref_article){
  50.                     array_push($panier_tmp[‘id_article’],$_SESSION[‘panier’][‘id_article’][$i]);
  51.                     array_push($panier_tmp[‘qte’],$_SESSION[‘panier’][‘qte’][$i]);
  52.                     array_push($panier_tmp[‘taille’],$_SESSION[‘panier’][‘taille’][$i]);
  53.                     array_push($panier_tmp[‘prix’],$_SESSION[‘panier’][‘prix’][$i]);
  54.                 }
  55.             }
  56.             /* Le transfert est terminé, on ré-initialise le panier */
  57.             $_SESSION[‘panier’] = $panier_tmp;
  58.             /* Option : on peut maintenant supprimer notre panier temporaire: */
  59.             unset($panier_tmp);
  60.             $suppression = true;
  61.         }
  62.         else{
  63.             $suppression == "absent";
  64.         }
  65.     }
  66.     return $suppression;
  67. }
  68.  
  69. // ———————————————————————–
  70. // Fonction qui supprime tout le contenu du panier en détruisant la variable après
  71. // vérification qu’on ne soit pas en phase de paiement.
  72. // ———————————————————————–
  73. function vider_panier(){
  74.     $vide = false;
  75.     if(!isset($_SESSION[‘panier’][‘verrouille’]) || $_SESSION[‘panier’][‘verrouille’] == false){
  76.         if(isset($_SESSION[‘panier’])){
  77.             unset($_SESSION[‘panier’]);
  78.             if(!isset($_SESSION[‘panier’])){
  79.                 $vide = true;
  80.             }
  81.         }
  82.         else {
  83.             /* Le panier était déjà détruit, on renvoie une autre valeur exploitable au retour */
  84.             $vide = "inexistant";
  85.         }
  86.     }
  87.     return $vide;
  88. }
  89.  
  90. // ———————————————————————–
  91. // Vérifie la quantité enregistrée d’un article dans le panier
  92. // ———————————————————————–
  93. function nombre_article($ref_article){
  94.     /* On initialise la variable de retour */
  95.     $nombre = false;
  96.     /* Comptage du panier */
  97.     $nb_art = count($_SESSION[‘panier’][‘id_article’]);
  98.     /* On parcoure le panier à la recherche de l’article pour vérifier le cas échéant combien sont enregistrés */
  99.     for($i = 0; $i < $nb_art; $i++){
  100.         if($_SESSION[‘panier’][‘id_article’][$i] == $ref_article)
  101.         $nombre = $_SESSION[‘panier’][‘qte’][$i];
  102.     }
  103.     return $nombre;
  104. }
  105.  
  106. // ———————————————————————–
  107. // Calcule le montant total du panier
  108. // ———————————————————————–
  109. function montant_panier(){
  110.     /* On initialise le montant */
  111.     $montant = 0;
  112.     /* Comptage des articles du panier */
  113.     $nb_articles = count($_SESSION[‘panier’][‘id_article’]);
  114.     /* On va calculer le total par article */
  115.     for($i = 0; $i < $nb_articles; $i++){
  116.         $montant += $_SESSION[‘panier’][‘qte’][$i] * $_SESSION[‘panier’][‘prix’][$i];
  117.     }
  118.     /* On retourne le résultat */
  119.     return $montant;
  120. }
  121.  
  122. // ———————————————————————–
  123. // Vérifie la présence d’un article dans le panier
  124. // ———————————————————————–
  125. function verif_panier($ref_article){
  126.     /* On initialise la variable de retour */
  127.     $present = false;
  128.     /* On vérifie les numéros de références des articles et on compare avec l’article à vérifier */
  129.     if( count($_SESSION[‘panier’][‘id_article’]) > 0 && array_search($ref_article,$_SESSION[‘panier’][‘id_article’]) !== false){
  130.         $present = true;
  131.     }
  132.     return $present;
  133. }
  134.  
  135. // ———————————————————————–
  136. // Fonction de verrouillage du panier pendant la phase de paiement.
  137. // ———————————————————————–
  138. function preparerPaiement(){
  139.     $_SESSION[‘panier’][‘verrouille’] = true;
  140.     // Redirection vers le site du paiement en ligne
  141. }
  142.  
  143. // ———————————————————————–
  144. // Fonction qui va enregistrer les informations de la commande dans
  145. // la base de données et détruire le panier.
  146. // ———————————————————————–
  147. function paiementAccepte(){
  148.     //   Stockage du panier dans la BDD
  149.     unset($_SESSION[‘panier’]);
  150. }
  151. ?>
  152.  

Source : http://jmolline.free.fr/tutos/tuto_panier.html