Pour faire un panier

Fermé
bichou91 - Modifié par Chris 94 le 3/10/2016 à 20:32
jordane45 Messages postés 38286 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 14 novembre 2024 - 3 oct. 2016 à 22:50
Bonjour,

j'ai fait un code pour faire un panier, mais il y a défaillance, je sais qua il n ais pas entièrement fini,mais ce que j essaye de faire est quand je choisie un produit tu me le rentre dans mon panier et si je retourne sur la page produit et que je choisies un deuxième produits et bien tu me le met en dessous de l autre ...

 <?php 
 session_start();
 $catalogue = array(
  'livre_1' => array(
   'img' => '../img/livre_1.jpg',
   'title' => 'AU BOULOT ! livre 1',
   'desc' => 'Ce cahier d\'activité s\'adresse à des apprenants de niveau post-alphabétisation.
                FLE(A1/A2) et illétrisme.Il est particulièrement adapté aux adultes et aux jeunes en poste ou en l\'insertion professionnelle 3d graphème(ou-o/au/eau-oi-c/k/qu-ch-s/ss/c/t/ç-g/gu-bl/br/pl/pr/tr...)
                sont étudiés dans ce premier livre.',
    'niveau' => 'Niveau : A1.1 à A2',
    'date' => 'Date de parution : 05/09/2016',
     'auteur' => 'Valerie Vermurie',
    'prix' => 'Prix : 18.90 euro'
  
  ),
   'livre_2' => array(
   'img' => '../img/livre_2.jpg',
   'title' => 'AU BOULOT ! livre 2',
   'desc' => 'Ce second cahier d\'activité est dans la continuité du précédent et propose d\'aborder d\'autres sons.
                Là encore, l\'apprenant est un profesionnel et un acteur social de la vie française.Le lexique regroupe 
                par exemple différents domaines professiones comme: les transports, l\'hotellerie-restauration, la mode et le textile, le batiment,
                l\'entretien et les services, les espaces verts...',
    'niveau' => 'Niveau : A1.1 à A2',
    'date' => 'Date de parution : 05/09/2016',
     'auteur' => 'Maria Marcastel',
   'prix' => 'Prix : 18.90 euro'
  
  ),
  'livre_3' => array(
   'img' => '../img/mtp1.jpg',
   'title' => 'METIER DU TRANSPORT & PERMIS VOITURE-POIDS LOURD-LIVRE 1',
   'desc' => 'Ce livre s\'adresse également aux personnes qui souhaitent développer et renforcer leurs connaissances 
                sur le code de la route dans le but de passer le permis voiture ou le permis poids lourd
                par la suite.',
   'niveau' => 'Niveau : A1.1 à A2',
   'date' => 'Date de parution : 15/03/2017',
     'auteur' => 'Nancy Lemaire',
   'prix' => 'Prix : 18.90 euro'
  
  ),
 'livre_4' => array(
   'img' => '../img/mtp2.jpg',
   'title' => 'METIER DU TRANSPORT & PERMIS VOITURE-POIDS LOURD-LIVRE 2',
   'desc' => 'La communication professionnelle, la prévention routière et le code de la route constituent le fil conducteur du livre.
                L\'apprenant y est un professionnel et un acteur social.',
   'niveau' => 'Niveau : A1.1 à A2',
    'date' => 'Date de parution : 15/03/2017',
     'auteur' => 'Virginie Laborie',
    'prix' => 'Prix : 18.90 euro'
  
  )

 );
// Création du panier si n'existe pas dans la session de l'utilisateur
session_start();
$qte_article = array(1,2,3,4,5,6,7,8,9,10); 
foreach($catalogue as $cle => $catalogues){
if (isset($_SESSION['panier']))  $_SESSION['panier'] = array();

// Voici les données externes utilisées par le panier
$id_article   = isset($_GET['id_article'])   ? $_GET['id_article']   : false;
$img_article  =isset($_GET['img'])  ? $_GET['img']  : false;
$nom_article  = isset($_GET['title'])  ? $_GET['title']  : false;
$desc_article  = isset($_GET['desc'])  ? $_GET['desc']  : false;
$prix_article =isset($_GET['prix']) ? $_GET['prix'] : '?';
$qte_article  = isset($_GET['qte'])  ? $_GET['qte']  :  header("Location: http://localhost/project_val_bis/page_principal/livres.php"); 
// Voici les traitements du panier
if ($id_article == null) echo 'Veuillez sélectionner un article pour le mettre dans le panier!'; // Message si pas d'acticle sélectionné

else
if (isset($_SESSION['panier'])){// Ajouter un nouvel article
   
$_SESSION['panier'][$id_article]['img'] = $img_article;
$_SESSION['panier'][$id_article]['title'] = $nom_article;
$_SESSION['panier'][$id_article]['desc']  = $desc_article;
$_SESSION['panier'][$id_article]['prix'] = $prix_article;
$_SESSION['panier'][$id_article]['qte']  = $qte_article;

} 
else if (isset($_GET['modifier']))  $_SESSION['panier'][$id_article]['qte'] = $qte_article; // Modifier la quantité achetée
else if (isset($_GET['supprimer']))  unset($_SESSION['panier'][$id_article]); // Supprimer un article du panier

// Voici l'affichage du panier
echo '<h2>Contenu de votre panier</h2><ul>';
if (isset($_SESSION['panier']) && count($_SESSION['panier'])>0){
  $total_panier = 0;
  foreach($_SESSION['panier'] as $id_article=>$article_acheté){
    // On affiche chaque ligne du panier : nom, prix et quantité modifiable + 2 boutons : modifier la qté et supprimer l'article
    if (empty($article_acheté['img']) && empty($article_acheté['title']) && empty($article_acheté['desc'])&& empty($article_acheté['prix'])&& empty($article_acheté['qte'])){
      echo '<li style="display:inline-block;list-style:none;"><form><img style="float:left;padding-right:.5em;" src="'.$article_acheté['img'].'" width="100" height="140" alt="" />', $article_acheté['title'], $article_acheté['desc'], ' (', number_format($article_acheté['prix'], 2, ',', ' '), ' €) ',
       '<input type="hidden" name="id_article" value="', $id_article , '" />
    <br />
        <br />Qté: <input type="text" name="qte_article" value="', $article_acheté['qte'] , '" />
        <input type="submit" name="modifier" value="Nouvelle Qté" />
        <input type="submit" name="supprimer" value="Supprimer" />
      </form>
      </li>';
      // Calcule le prix total du panier 
      $total_panier += $article_acheté['prix'] * $article_acheté['qte'];
    }
  }
  echo '<hr><h3>Total: ', number_format($total_panier, 2, ',', ' '), ' €'; // Affiche le total du panier
}
else { echo 'Votre panier est vide'; } // Message si le panier est vide
echo "</ul>";
}
?>

1 réponse

jordane45 Messages postés 38286 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 14 novembre 2024 4 698
Modifié par jordane45 le 3/10/2016 à 22:50
Bonjour,

Certains éléments de ton script me semblent inutiles ou incohérents...
Que vient faire ici ta variable Catalogue ? Pourquoi boucles tu dessus ?
Et ta variable $qte_articles que tu récupères en GET puis que tu initialises avec un array ... ??

Voici ce que je te propose à la place :
 
 <?php 
//Affichage des erreurs PHP
 error_reporting(E_ALL);
 
//démarrage Session
 session_start();
 

//----------------------------------------------------------------------------------------//
// récupération des variables
//----------------------------------------------------------------------------------------//
$arr_PANIER = !empty($_SESSION['panier']) ? $_SESSION['panier'] : NULL;
// Voici les données externes utilisées par le panier
$id_article   = isset($_GET['id_article'])   ? $_GET['id_article']   : false;
$img_article  =isset($_GET['img'])  ? $_GET['img']  : false;
$nom_article  = isset($_GET['title'])  ? $_GET['title']  : false;
$desc_article  = isset($_GET['desc'])  ? $_GET['desc']  : false;
$prix_article =isset($_GET['prix']) ? $_GET['prix'] : 0;
$qte_article  = isset($_GET['qte'])  ? $_GET['qte']  :  NULL; 
//actions
$modifier =isset($_GET['modifier']) ? $_GET['modifier'] : NULL;
$supprimer =isset($_GET['supprimer']) ? $_GET['supprimer'] : NULL;




//----------------------------------------------------------------------------------------//
// Gestion du panier
//----------------------------------------------------------------------------------------//

if(!$qte_article){
 //Si pas de quantité
 header("Location: livres.php");
 exit();
}

if (!$id_article){
  // Message si pas d'acticle sélectionné
  echo 'Veuillez sélectionner un article pour le mettre dans le panier!'; 
  
}else{

  
  if($modifier){
      // Modifier la quantité achetée
      $_SESSION['panier'][$id_article]['qte'] = $qte_article; 
  }elseif($supprimer){
      // Supprimer un article du panier
      unset($_SESSION['panier'][$id_article]); 
  }else{
      //Ajout d'un article au pannier
      $_SESSION['panier'][$id_article]['img'] = $img_article;
      $_SESSION['panier'][$id_article]['title'] = $nom_article;
      $_SESSION['panier'][$id_article]['desc']  = $desc_article;
      $_SESSION['panier'][$id_article]['prix'] = $prix_article;
      $_SESSION['panier'][$id_article]['qte']  = $qte_article;
  }  
}


//----------------------------------------------------------------------------------------//
// Voici l'affichage du panier
//----------------------------------------------------------------------------------------//
echo '<h2>Contenu de votre panier</h2><ul>';
if (!empty($arr_PANIER)){
  $total_panier = 0;
  foreach($arr_PANIER as $id_article=>$article_acheté){
      // On affiche chaque ligne du panier : nom, prix et quantité modifiable + 2 boutons : modifier la qté et supprimer l'article
      if (   !empty($article_acheté['img']) 
          && !empty($article_acheté['title']) 
          && !empty($article_acheté['desc'])
          && !empty($article_acheté['prix'])
          && !empty($article_acheté['qte'])){
          
        echo '<li style="display:inline-block;list-style:none;">
              <form method="get" action="">
                <input type="hidden" name="img" value="'.$article_acheté['img'].'">
                <img style="float:left;padding-right:.5em;" src="'.$article_acheté['img'].'" width="100" height="140" alt="" />'
                , $article_acheté['title']
                , $article_acheté['desc']
                , ' (', number_format($article_acheté['prix'], 2, ',', ' '), ' €) '
                , '<input type="hidden" name="id_article" value="', $id_article , '" />
                  <br />
                  <br />Qté: <input type="text" name="qte_article" value="', $article_acheté['qte'] , '" />
                  <input type="submit" name="modifier" value="Nouvelle Qté" />
                  <input type="submit" name="supprimer" value="Supprimer" />
                </form>
             </li>';
          // Calcule le prix total du panier 
          $total_panier += $article_acheté['prix'] * $article_acheté['qte'];
      }
  }
   echo '<hr><h3>Total: ', number_format($total_panier, 2, ',', ' '), ' €'; // Affiche le total du panier
} else { 
   // Message si le panier est vide
   echo 'Votre panier est vide'; 
} 

echo "</ul>";


Cordialement, 
Jordane                                                                 
0