Pas de choix multiple dans le panier

Fermé
bichou91 Messages postés 4 Date d'inscription dimanche 11 septembre 2016 Statut Membre Dernière intervention 18 septembre 2016 - Modifié par jordane45 le 11/09/2016 à 21:57
bichou91 Messages postés 4 Date d'inscription dimanche 11 septembre 2016 Statut Membre Dernière intervention 18 septembre 2016 - 12 sept. 2016 à 19:07
bonjour,

j'ai un souci avec mon panier, quand je fait mon premier tous ce passe bien, par contre le deuxieme ne se positionne pas en dessous du premier choix..
le premier s'efface et le deuxieme se met à la place.

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']   : true;
$img_article  = isset($_GET['img'])  ? $_GET['img']  : true;
$nom_article  = isset($_GET['title'])  ? $_GET['title']  : true;
$desc_article  = isset($_GET['desc'])  ? $_GET['desc']  : true;
$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 (isset($article_acheté['img']) && isset($article_acheté['title']) && isset($article_acheté['desc'])&& isset($article_acheté['prix'])&& isset($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>";
}


merci d avance



EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :ICI

Merci d'y penser dans tes prochains messages.

2 réponses

jordane45 Messages postés 38326 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 2 décembre 2024 4 712
11 sept. 2016 à 22:54
Bonjour,

ton code est un peu bordelique je trouve... mais bon.

Pour commencer... d'où vient la variable $catalogue et que contient-elle ?

ensuite.. pour récupérer proprement les variables GET il est préférable de le faire avec !empty au lieu de isset
$id_article   = !empty($_GET['id_article'])   ? $_GET['id_article']   : null;


Il faudrait aussi revoir ta façon d'écrire tes IF/else....
Comme le préconise (ce n'est pas une obligation mais ça rend le code plus lisible) la norme PSR-2 ( voir ici chapitre 5 : https://www.php-fig.org/psr/psr-2/ ... un bloc IF s'écrit :
if ($expr1) {
    // if body
} elseif ($expr2) {
    // elseif body
} else {
    // else body;
}


N'hésites pas non plus à utiliser des ECHO ou des PRINT_R (ou des var_dump) pour afficher le contenu des tes différentes variables et essayer de comprendre où ça bloque.


Pour finir..
merci de reposter ton code (en ayant tenu compte de mes remarques) et en t'appliquant sur la mise en forme (utilisation des balises de code et indentation) histoire qu'on puisse facilement lire ton code.


0
bichou91 Messages postés 4 Date d'inscription dimanche 11 septembre 2016 Statut Membre Dernière intervention 18 septembre 2016
12 sept. 2016 à 19:07
merci et je vais refaire mon code façon psr2....
0