Panier en PHP

Panier en PHP - PHP - Programmation

Marsh Posté le 09-05-2014 à 22:25:14    

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 !! :)

Reply

Marsh Posté le 09-05-2014 à 22:25:14   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed