Linux SRV-16 6.18.44-paas #1 SMP PREEMPT_DYNAMIC Thu Aug 13 10:08:12 UTC 2026 x86_64
/
srv
/
data
/
web
/
vhosts
/
www.volley92.asso.fr
/
htdocs
/
functions
/
ShoppingCart
/
/srv/data/web/vhosts/www.volley92.asso.fr/htdocs/functions/ShoppingCart/functions.php
<?php /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ /* Fonctions de base de gestion du panier */ /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ function ajout_devis($devis) { $ajout = false; require_once("../connexionBD.php"); $reqPrep=$connexion->query(" SELECT * FROM devis_produit dp INNER JOIN produit_reference AS pr ON dp.produit = pr.id INNER JOIN produit AS p ON p.id = pr.produit WHERE devis=$devis;"); $reqPrep->setFetchMode(PDO::FETCH_OBJ); if($reqPrep->rowCount()){ while($row=$reqPrep->fetch()){ if(!isset($_SESSION['cart']['lock']) || $_SESSION['cart']['lock'] == false){ if(!verif_panier($row->id)) { $_SESSION['devis']=$devis; array_push($_SESSION['cart']['id'],$row->id); array_push($_SESSION['cart']['reference'],$row->reference); array_push($_SESSION['cart']['name'],$row->libelle); array_push($_SESSION['cart']['quantity'],$row->quantite); array_push($_SESSION['cart']['shipping_cost'],$row->frais_port/100); //array_push($_SESSION['cart']['taille2'],$taille2); array_push($_SESSION['cart']['price'],($row->prix/100)); //array_push($_SESSION['cart']['uniteMesure'],$uniteMesure); $ajout = true; } else $ajout = modif_qte($row->id,nombre_article($row->id)+1); } } } return $ajout; } /** * Ajoute un article dans le panier après vérification que nous ne somme pas en phase de paiement * * @param array $select variable tableau associatif contenant les valeurs de l'article * @return Mixed Retourne VRAI si l'ajout est effectué, FAUX sinon voire une autre valeur si l'ajout * est renvoyé vers la modification de quantité. * @see {@link modif_qte()} */ function add_product($id,$name,$price,$reference,$shipping_cost,$tax){ $ajout = false; if(!isset($_SESSION['cart']['lock']) || $_SESSION['cart']['lock'] == false){ if(!verif_panier($id)) { array_push($_SESSION['cart']['id'],$id); array_push($_SESSION['cart']['reference'],$reference); array_push($_SESSION['cart']['name'],$name); array_push($_SESSION['cart']['quantity'],1); array_push($_SESSION['cart']['price'],$price); array_push($_SESSION['cart']['shipping_cost'],$shipping_cost); array_push($_SESSION['cart']['tax'],$tax); $ajout = true; } else $ajout = modif_qte($id,1); }return $ajout; } function ajout_livraison(){ $_SESSION['livraison']=true; } function suppr_livraison(){ $_SESSION['livraison']=false; } /** * Modifie la quantité d'un article dans le panier après vérification que nous ne somme pas en phase de paiement * * @param String $ref_article Identifiant de l'article à modifier * @param Int $qte Nouvelle quantité à enregistrer * @return Mixed Retourne VRAI si la modification a bien eu lieu, * FAUX sinon, * "absent" si l'article est absent du panier, * "qte_ok" si la quantité n'est pas modifiée car déjà correctement enregistrée. */ function modif_qte($ref_article, $qte){ /* On initialise la variable de retour */ $modifie = false; if(!isset($_SESSION['cart']['lock']) || $_SESSION['cart']['lock'] == false){ if(is_int($qte) && $qte>0 && nombre_article($ref_article)!=false && $qte!=nombre_article($ref_article)){ /* On compte le nombre d'articles différents dans le panier */ $nb_articles = count($_SESSION['cart']['id']); /* On parcoure le tableau de session pour modifier l'article précis. */ for($i = 0; $i < $nb_articles; $i++){ if($ref_article == $_SESSION['cart']['id'][$i]){ $_SESSION['cart']['quantity'][$i] = $qte; $modifie = true; } } }else{ /* L'article est absent du panier, donc on ne peut pas modifier la quantité ou bien * le nombre est exactement le même et il est inutile de le modifier * Si l'article est absent, comme on a ni la taille ni le prix, on ne peut pas l'ajouter * Si le nombre est le même, on ne fait pas de changement. On peut donc retourner un autre * type de valeur pour indiquer une erreur qu'il faudra traiter à part lors du retour d'appel */ if(nombre_article($ref_article) != false)$modifie = "absent"; if($qte != nombre_article($ref_article))$modifie = "qte_ok"; } } return $modifie; } /** * Supprimer un article du panier après vérification que nous ne somme pas en phase de paiement * * @param String $ref_article numéro de référence de l'article à supprimer * @return Mixed Retourne TRUE si la suppression a bien été effectuée, * FALSE sinon, "absent" si l'article était déjà retiré du panier */ function supprim_article($ref_article){ $suppression = false; if(!isset($_SESSION['cart']['lock']) || $_SESSION['cart']['lock'] == false){ /* On vérifie que l'article à supprimer est bien présent dans le panier */ if(nombre_article($ref_article) != false){ /* création d'un tableau temporaire de stockage des articles */ $panier_tmp = array("id"=>array(),"qte"=>array(),"taille"=>array(),"taille2"=>array(),"prix"=>array()); /* Comptage des articles du panier */ $nb_articles = count($_SESSION['cart']['id']); /* Transfert du panier dans le panier temporaire */ for($i = 0; $i < $nb_articles; $i++){ /* On transfère tout sauf l'article à supprimer */ if($_SESSION['cart']['id'][$i] != $ref_article){ array_push($panier_tmp['id'],$_SESSION['cart']['id'][$i]); array_push($panier_tmp['quantity'],$_SESSION['cart']['quantity'][$i]); array_push($panier_tmp['taille'],$_SESSION['cart']['taille'][$i]); array_push($panier_tmp['taille2'],$_SESSION['cart']['taille2'][$i]); array_push($panier_tmp['price'],$_SESSION['cart']['price'][$i]); } } /* Le transfert est terminé, on ré-initialise le panier */ $_SESSION['cart'] = $panier_tmp; /* Option : on peut maintenant supprimer notre panier temporaire: */ unset($panier_tmp); $suppression = true; }else{ $suppression == "absent"; } } return $suppression; } /** * Supprimer un article du panier : autre méthode. * * @param String $ref_article numéro de référence de l'article à supprimer * @param Boolean $reindex : facultatif, par défaut, vaut true pour ré-indexer le tableau après * suppression. On peut envoyer false si cette ré-indexation n'est pas nécessaire. * @return Mixed Retourne TRUE si la suppression a bien été effectuée, * FALSE sinon, "absent" si l'article était déjà retiré du panier */ function supprim_article2($ref_article, $reindex = true) { $suppression = false; if(!isset($_SESSION['cart']['lock']) || $_SESSION['cart']['lock'] == false) { $aCleSuppr = array_keys($_SESSION['cart']['id'], $ref_article); /* sortie la clé a été trouvée */ if (!empty ($aCleSuppr)) { /* on traverse le panier pour supprimer ce qui doit l'être */ foreach ($_SESSION['cart'] as $k=>$v) { foreach($aCleSuppr as $v1) { unset($_SESSION['cart'][$k][$v1]); // remplace la ligne foireuse } /* Réindexation des clés du panier si l'option $reindex a été laissée à true */ if($reindex == true) { $_SESSION['cart'][$k] = array_values($_SESSION['cart'][$k]); } $suppression = true; } } else { $suppression = "absent"; } } return $suppression; } /** * Fonction qui supprime tout le contenu du panier en détruisant la variable après * vérification qu'on ne soit pas en phase de paiement. * * @return Mixed Retourne VRAI si l'exécution s'est correctement déroulée, Faux sinon et "inexistant" si * le panier avait déjà été détruit ou n'avait jamais été créé. */ function vider_panier() { $vide = false; if(!isset($_SESSION['cart']['lock']) || $_SESSION['cart']['lock'] == false) { if(isset($_SESSION['cart'])) { unset($_SESSION['cart']); if(!isset($_SESSION['cart'])) { $vide = true; } } else { /* Le panier était déjà détruit, on renvoie une autre valeur exploitable au retour */ $vide = "inexistant"; } } return $vide; } /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ /* Fonctions annexes de gestion du panier */ /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ /** * Vérifie la quantité enregistrée d'un article dans le panier * * @param String $ref_article référence de l'article à vérifier * @return Mixed Renvoie le nombre d'article s'il y en a, ou Faux si cet article est absent du panier */ function nombre_article($ref_article) { /* On initialise la variable de retour */ $nombre = false; /* Comptage du panier */ $nb_art = count($_SESSION['cart']['id']); /* On parcoure le panier à la recherche de l'article pour vérifier le cas échéant combien sont enregistrés */ for($i = 0; $i < $nb_art; $i++) { if($_SESSION['cart']['id'][$i] == $ref_article) $nombre = $_SESSION['cart']['quantity'][$i]; } return $nombre; } /** * Calcule le montant total du panier * * @return Double */ function montant_panier() { /* On initialise le montant */ $montant = 0; /* Comptage des articles du panier */ $nb_articles = count($_SESSION['cart']['id']); /* On va calculer le total par article */ for($i = 0; $i < $nb_articles; $i++) { $montant += $_SESSION['cart']['quantity'][$i] * $_SESSION['cart']['price'][$i]; } /* On retourne le résultat */ return $montant; } /** * Vérifie la présence d'un article dans le panier * * @param String $ref_article référence de l'article à vérifier * @return Boolean Renvoie Vrai si l'article est trouvé dans le panier, Faux sinon */ function verif_panier($ref_article) { /* On initialise la variable de retour */ $present = false; /* On vérifie les numéros de références des articles et on compare avec l'article à vérifier */ if( count($_SESSION['cart']['id']) > 0 && array_search($ref_article,$_SESSION['cart']['id']) !== false) { $present = true; } return $present; } /** * Fonction de verrouillage du panier pendant la phase de paiement. * */ function preparerPaiement() { $_SESSION['cart']['lock'] = true; header("Location: URL_DU_SITE_DE_BANQUE"); } /** * Fonction qui va enregistrer les informations de la commande dans * la base de données et détruire le panier. * */ function paiementAccepte() { /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ /* Stockage du panier dans la BDD */ /* ajoutez ici votre code d'insertion */ /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ unset($_SESSION['cart']); } //Retourne le nombre de produit dans le panier function nbProduct(){ $nbProduct=0; foreach ($_SESSION['cart']['quantity'] as $value) $nbProduct+=$value; return $nbProduct; } ?>