Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
711 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Panier en PHP

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Panier en PHP

n°2227668
ticettac5
Posté le 09-05-2014 à 22:25:14  profilanswer
 

Bonsoir à tous ! :hello:  
Excusez moi de vous déranger mais j'ai besoin d'aide svp. Je dois créer un panier en php pour un site e-commerce (c'est pour le lycée donc il faut juste que l'utilisateur puisse choisir ces produits et qu'il y ait un récapitulatif dans une page panier virtuel sans commander).
C'est un site pour "vendre" des places de concerts, spectacles...
J'ai d'abord créé des menus déroulants mais je ne sais pas comment faire pour les relier au panier:  

Code :
  1. <html>
  2. <p>
  3. TARIF:
  4.     <select name="enfant">
  5.                 <option value="NORMAL">NORMAL</option>
  6.      <option value="ENFANT (- de 12ans)">ENFANT (- de 12ans)</option>
  7.       <option value="SENIOR(+ de 60ans)">SENIORS (+ de 60ans)</option>
  8. <input type="submit" value=" Valider " />
  9. </select>
  10. </p>
  11. <p>
  12. PLACEMENT:
  13.     <select name="enfant">
  14.                 <option value="SIEGE">SIEGE</option>
  15.     <option value="CATEGORIE 1">CATEGORIE 1</option>
  16.     <option value="CATEGORIE 2">CATEGORIE 2</option>
  17.     <option value="CATEGORIE 3">CATEGORIE 3</option>
  18.     <option value="GRADINS">GRADINS</option>
  19.     <option value="DEBOUT">DEBOUT</option>
  20. <input type="submit" value=" Valider " />
  21. </select>
  22. </p>
  23. <p>
  24. NOMBRE DE BILLET(S):
  25.     <select name="enfant">
  26.                 <option value="0">0</option>
  27.     <option value="1">1</option>
  28.     <option value="2">2</option>
  29.     <option value="3">3</option>
  30.     <option value="4">4</option>
  31.     <option value="5">5</option>
  32.     <option value="6">6</option>
  33.     <option value="7">7</option>
  34.     <option value="8">8</option>
  35.     <option value="9">9</option>
  36.     <option value="10">10</option>
  37. <input type="submit" value=" Valider " />
  38. </select>
  39. </p>


 
J'ai essayé de regarder un tuto pour la page panier mais ça ne marche pas.
Voici la fonction-panier.php:

Code :
  1. <?php
  2. /**
  3. * Verifie si le panier existe, le créé sinon
  4. * @return booleen
  5. */
  6. function creationPanier(){
  7.    if (!isset($_SESSION['panier'])){
  8.       $_SESSION['panier']=array();
  9.       $_SESSION['panier']['billet'] = array();
  10.       $_SESSION['panier']['qteProduit'] = array();
  11.       $_SESSION['panier']['prixProduit'] = array();
  12.       $_SESSION['panier']['verrou'] = false;
  13.    }
  14.    return true;
  15. }
  16. /**
  17. * Ajoute un article dans le panier
  18. * @param string $billet
  19. * @param int $qteProduit
  20. * @param float $prixProduit
  21. * @return void
  22. */
  23. function ajouterArticle($billet,$qteProduit,$prixProduit){
  24.    //Si le panier existe
  25.    if (creationPanier() && !isVerrouille())
  26.    {
  27.       //Si le produit existe déjà on ajoute seulement la quantité
  28.       $positionProduit = array_search($billet,  $_SESSION['panier']['billet']);
  29.       if ($positionProduit !== false)
  30.       {
  31.          $_SESSION['panier']['qteProduit'][$positionProduit] += $qteProduit ;
  32.       }
  33.       else
  34.       {
  35.          //Sinon on ajoute le produit
  36.          array_push( $_SESSION['panier']['billet'],$billet);
  37.          array_push( $_SESSION['panier']['qteProduit'],$qteProduit);
  38.          array_push( $_SESSION['panier']['prixProduit'],$prixProduit);
  39.       }
  40.    }
  41.    else
  42.    echo "Un problème est survenu veuillez contacter l'administrateur du site.";
  43. }
  44. /**
  45. * Modifie la quantité d'un article
  46. * @param $billet
  47. * @param $qteProduit
  48. * @return void
  49. */
  50. function modifierQTeArticle($billet,$qteProduit){
  51.    //Si le panier éxiste
  52.    if (creationPanier() && !isVerrouille())
  53.    {
  54.       //Si la quantité est positive on modifie sinon on supprime l'article
  55.       if ($qteProduit > 0)
  56.       {
  57.          //Recharche du produit dans le panier
  58.          $positionProduit = array_search($billet,  $_SESSION['panier']['billet']);
  59.          if ($positionProduit !== false)
  60.          {
  61.             $_SESSION['panier']['qteProduit'][$positionProduit] = $qteProduit ;
  62.          }
  63.       }
  64.       else
  65.       supprimerArticle($billet);
  66.    }
  67.    else
  68.    echo "Un problème est survenu veuillez contacter l'administrateur du site.";
  69. }
  70. /**
  71. * Supprime un article du panier
  72. * @param $billet
  73. * @return unknown_type
  74. */
  75. function supprimerArticle($billet){
  76.    //Si le panier existe
  77.    if (creationPanier() && !isVerrouille())
  78.    {
  79.       //Nous allons passer par un panier temporaire
  80.       $tmp=array();
  81.       $tmp['billet'] = array();
  82.       $tmp['qteProduit'] = array();
  83.       $tmp['prixProduit'] = array();
  84.       $tmp['verrou'] = $_SESSION['panier']['verrou'];
  85.       for($i = 0; $i < count($_SESSION['panier']['billet']); $i++)
  86.       {
  87.          if ($_SESSION['panier']['billet'][$i] !== $billet)
  88.          {
  89.             array_push( $tmp['billet'],$_SESSION['panier']['billet'][$i]);
  90.             array_push( $tmp['qteProduit'],$_SESSION['panier']['qteProduit'][$i]);
  91.             array_push( $tmp['prixProduit'],$_SESSION['panier']['prixProduit'][$i]);
  92.          }
  93.       }
  94.       //On remplace le panier en session par notre panier temporaire à jour
  95.       $_SESSION['panier'] =  $tmp;
  96.       //On efface notre panier temporaire
  97.       unset($tmp);
  98.    }
  99.    else
  100.    echo "Un problème est survenu veuillez contacter l'administrateur du site.";
  101. }
  102. /**
  103. * Montant total du panier
  104. * @return int
  105. */
  106. function MontantGlobal(){
  107.    $total=0;
  108.    for($i = 0; $i < count($_SESSION['panier']['billet']); $i++)
  109.    {
  110.       $total += $_SESSION['panier']['qteProduit'][$i] * $_SESSION['panier']['prixProduit'][$i];
  111.    }
  112.    return $total;
  113. }
  114. /**
  115. * Fonction de suppression du panier
  116. * @return void
  117. */
  118. function supprimePanier(){
  119.    unset($_SESSION['panier']);
  120. }
  121. /**
  122. * Permet de savoir si le panier est verrouillé
  123. * @return booleen
  124. */
  125. function isVerrouille(){
  126.    if (isset($_SESSION['panier']) && $_SESSION['panier']['verrou'])
  127.    return true;
  128.    else
  129.    return false;
  130. }
  131. /**
  132. * Compte le nombre d'articles différents dans le panier
  133. * @return int
  134. */
  135. function compterArticles()
  136. {
  137.    if (isset($_SESSION['panier']))
  138.    return count($_SESSION['panier']['billet']);
  139.    else
  140.    return 0;
  141. }
  142. ?>


Et mon panier.php:

Code :
  1. <?php
  2. session_start();
  3. include_once("fonctions-panier.php" );
  4. $erreur = false;
  5. $action = (isset($_POST['action'])? $_POST['action']:  (isset($_GET['action'])? $_GET['action']:null )) ;
  6. if($action !== null)
  7. {
  8.    if(!in_array($action,array('ajout', 'suppression', 'refresh')))
  9.    $erreur=true;
  10.    //récuperation des variables en POST ou GET
  11.    $l = (isset($_POST['l'])? $_POST['l']:  (isset($_GET['l'])? $_GET['l']:null )) ;
  12.    $p = (isset($_POST['p'])? $_POST['p']:  (isset($_GET['p'])? $_GET['p']:null )) ;
  13.    $q = (isset($_POST['q'])? $_POST['q']:  (isset($_GET['q'])? $_GET['q']:null )) ;
  14.    //Suppression des espaces verticaux
  15.    $l = preg_replace('#\v#', '',$l);
  16.    //On verifie que $p soit un float
  17.    $p = floatval($p);
  18.    //On traite ce qui peut etre un entier simple ou un tableau d'entier
  19.    
  20.    if (is_array($q)){
  21.       $QteArticle = array();
  22.       $i=0;
  23.       foreach ($q as $contenu){
  24.          $QteArticle[$i++] = intval($contenu);
  25.       }
  26.    }
  27.    else
  28.    $q = intval($q);
  29.    
  30. }
  31. if (!$erreur){
  32.    switch($action){
  33.       Case "ajout":
  34.          ajouterArticle($l,$q,$p);
  35.          break;
  36.       Case "suppression":
  37.          supprimerArticle($l);
  38.          break;
  39.       Case "refresh" :
  40.          for ($i = 0 ; $i < count($QteArticle) ; $i++)
  41.          {
  42.             modifierQTeArticle($_SESSION['panier']['billet'][$i],round($QteArticle[$i]));
  43.          }
  44.          break;
  45.       Default:
  46.          break;
  47.    }
  48. }
  49. echo '<?xml version="1.0" encoding="utf-8"?>';?>
  50. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  51. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
  52. <head>
  53. <title>Votre panier</title>
  54. </head>
  55. <body>
  56. <form method="post" action="panier.php">
  57. <table style="width: 400px">
  58. <tr>
  59.  <td colspan="4">Votre panier</td>
  60. </tr>
  61. <tr>
  62.  <td>Billet</td>
  63.  <td>Quantité</td>
  64.  <td>Prix Unitaire</td>
  65.  <td>Action</td>
  66. </tr>
  67. <?php
  68. if (creationPanier())
  69. {
  70.    $nbArticles=count($_SESSION['panier']['billet']);
  71.    if ($nbArticles <= 0)
  72.    echo "<tr><td>Votre panier est vide </ td></tr>";
  73.    else
  74.    {
  75.       for ($i=0 ;$i < $nbArticles ; $i++)
  76.       {
  77.          echo "<tr>";
  78.          echo "<td>".htmlspecialchars($_SESSION['panier']['billet'][$i])."</ td>";
  79.          echo "<td><input type=\"text\" size=\"4\" name=\"q[]\" value=\"".htmlspecialchars($_SESSION['panier']['qteProduit'][$i])."\"/></td>";
  80.          echo "<td>".htmlspecialchars($_SESSION['panier']['prixProduit'][$i])."</td>";
  81.          echo "<td><a href=\"".htmlspecialchars("panier.php?action=suppression&l=".rawurlencode($_SESSION['panier']['billet'][$i]))."\">XX</a></td>";
  82.          echo "</tr>";
  83.       }
  84.       echo "<tr><td colspan=\"2\"> </td>";
  85.       echo "<td colspan=\"2\">";
  86.       echo "Total : ".MontantGlobal();
  87.       echo "</td></tr>";
  88.       echo "<tr><td colspan=\"4\">";
  89.       echo "<input type=\"submit\" value=\"Rafraichir\"/>";
  90.       echo "<input type=\"hidden\" name=\"action\" value=\"refresh\"/>";
  91.       echo "</td></tr>";
  92.    }
  93. }
  94. ?>
  95. </table>
  96. </form>
  97. </body>
  98. </html>


 
Merci d'avance !! :)

mood
Publicité
Posté le 09-05-2014 à 22:25:14  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Panier en PHP

 

Sujets relatifs
PHP supprimer produit panierAppel panier PHP
Panier en PHP[PHP] Faire un panier (site marchand)
panier virtuel PHPPanier en PHP Sécurité
[PHP] Ajout panier écrase le précédentPanier en PHP
caddie/panier PHP ?[PHP] Question sur cookie + panier de site web commercial
Plus de sujets relatifs à : Panier en PHP


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR