Panier : je ne m'en sors pas....

cs_jereln Messages postés 10 Date d'inscription mardi 5 avril 2005 Statut Membre Dernière intervention 1 octobre 2009 - 22 janv. 2008 à 13:28
cs_garfield90 Messages postés 388 Date d'inscription lundi 7 juillet 2003 Statut Webmaster Dernière intervention 10 février 2009 - 23 janv. 2008 à 16:12
Bonjour,
je suis en trai de créer un panier avec utilisation des sessions.
J'ai une première page (index.php) qui correspond à mon catalogue. Chaque article a son propre bouton ajouter. Lorsque je clique sur celui ci, je passe sur la page panier (cart.php) qui liste mon panier. Le problème est que lorsque je clique sur le lien pour revenir sur le catalogue (afin de choisir un autre article), mon panier se vide est ne laisse apparaitre que le dernier article choisi.

Voici mes deux pages :
index.php

<?php
if (!$_SESSION['panier'])
       session_start($_SESSION['panier']);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Catalogue</title>
<link rel="stylesheet" href="fichier.css" type="text/css">
</head>

    ----

        Ma boutique en ligne.,
   
    ----

        Panier ( )

<fieldset>
    <legend align="left">
    Articles
    </legend>
    ----

                <table class="Style3">
            ----

               , Canard de bain</td>
           
            ----

                ,
                Un compagnon de jeu pour le bain.

                    2.99 Eur

                    <form method="POST" action="cart.php">
                   
                   
                   
                   
                   
                   
                    </form>

                 ,
           
       

        </td>
        <td>
                    ----

                Compas,
           
            ----

                ,
                Pour ne pas perdre le nord.

                    9.95 Eur

                    <form method="POST" action="cart.php">
                   
                   
                   
                   
                   
                   
                    </form>

               ,
           
       

        </td>
        <td>
                    ----
   
                Aquarium et poisson rouge,
           
            ----

                ,
                Pour passer le temps.

                    24.95 Eur

                    <form method="POST" action="cart.php">
                   
                   
                   
                   
                   
                   
                    </form>

               ,
           
       

        </td>
        <td>
                    ----

                Boite à lettres,
           
            ----

                ,
                Vous avez du courrier.

                    12.99 Eur

                    <form method="POST" action="cart.php">
                   
                   
                   
                   
                   
                   
                    </form>

               ,
           
       

        </td>
    </tr>
</table>
</fieldset>

(c) 2008 - Ma Boutique en ligne - 1.0.0

</html>

et ma page cart.php :
<?
session_start();
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Panier</title>
<link rel="stylesheet" href="fichier.css" type="text/css">

</head>

    ----

        Ma boutique en ligne.,
   
    ----

        ">Articles | Paiement

<?php
    $_SESSION['article'] = $_POST['article'];
    $_SESSION['code'] = $_POST['code'];
    $_SESSION['qte'] = $_POST['qte'];
    $_SESSION['prix'] = $_POST['prix'];
    $_SESSION['tva'] = $_POST['tva'];
    $_SESSION['poids'] = $_POST['poids'];
    $total = $_SESSION['prix'] * $_SESSION['qte'];
   

$nbArticles=count($_SESSION['article']);

  if ($nbArticles <= 0)
   echo "<tr><td>Votre panier est vide </ td></tr>";
  else
  {
?>

<fieldset>
    <legend align="left">
    Panier
    </legend>

    ----

        Code article,
        Produit,
        Quantité,
        Prix,
        Total,
        ,
   
<?php
   for ($i=0 ;$i < $nbArticles ; $i++)
   {
echo '----
';
echo '';
echo $_SESSION['code'];
echo ', ';
echo '';
echo $_SESSION['article'];
echo ', ';
echo '';
echo '&nbsp;';
echo $_SESSION['qte'];
echo '&nbsp;';
echo ', ';
echo '';
echo $_SESSION['prix'];
echo ', ';
echo '';
echo $total;
echo ', ';
echo '';
echo ' ';
echo ', ';
echo '';
    }
}
?>

    ----

        ,
        ,
        ,
        TOTAL,
                    <?php
            $total2 = '12';
            echo $total2;
            ?>
       ,
        Vider,
   
   

</fieldset>

</html>

Merci de m'aider.

3 réponses

coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
22 janv. 2008 à 21:47
Salut!
Le session_start() doit être placé de manière inconditionnelle (sans aucun test) en haut de toutes les pages!! :-)

@++

R@f

La boîte à bouts de codes
"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
0
cs_jereln Messages postés 10 Date d'inscription mardi 5 avril 2005 Statut Membre Dernière intervention 1 octobre 2009
23 janv. 2008 à 12:03
Merci de m'avoir répondu.
Pour le session_start();  OK
Mais mon problème est que lorsque je suis sur ma page panier (cart.php), j'ai un lien pour revenir sur ma page catalogue (index.php) pour choisir d'autres articles. Du coup, lorsque je choisi un nouvel article, celui ci "écrase" mon panier existant et il ne reste que le dernier.

Je ne sais pas si je suis claire?

je ne sais pas comment faire ?
0
cs_garfield90 Messages postés 388 Date d'inscription lundi 7 juillet 2003 Statut Webmaster Dernière intervention 10 février 2009
23 janv. 2008 à 16:12
euh, c'est tout a fait normal.

en gros, a chaque fois que tu ajoutes un produits dans ton panier ($_SESSION), tu l'écrases.
$_SESSION = $_POST donc tu auras toujours le dernier produit dans ton panier.

tu peux faire au pire :
$_SESSION['panier'][] = $_POST comme ca tu auras une ligne a chaque fois dans ton panier.

ne fais pas un copier coller du code, car y plein d'autres choses a faire.

regardes sur des sites/programme de e-commerce et regarde la maniere qu'il utilise pour gérer un panier.

"They are 10 sorts of persons whose understand binary and whose not"
0
Rejoignez-nous