Problème de panier et session

cs_jereln Messages postés 10 Date d'inscription mardi 5 avril 2005 Statut Membre Dernière intervention 1 octobre 2009 - 24 janv. 2008 à 10:58
cs_jereln Messages postés 10 Date d'inscription mardi 5 avril 2005 Statut Membre Dernière intervention 1 octobre 2009 - 24 janv. 2008 à 20:25
je suis en train de créer un panier à l'aide de sessions. J'ai une première page catalogue (index.php) où sont listés mes articles. Chacun d'eux a un bouton submit pour l'ajouter au panier.
Ma deuxième page (cart.php) doit lister tous les articles de mon panier. J'y ai aussi un lien pour revenir à la page catalogue.

Mon problème vient des sessions : je n'arrive pas à ajouter plusieurs articles au panier. Je ne visualise que le dernier article choisi.

code de ma page index.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>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>

/////////////////////////////
code de 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['panier'] = $panier;
    $panier['article'] = $_POST['article'];
    $panier['code'] = $_POST['code'];
    $panier['qte'] = $_POST['qte'];
    $panier['prix'] = $_POST['prix'];
    $panier['tva'] = $_POST['tva'];
    $panier['poids'] = $_POST['poids'];
    $total = $panier['prix'] * $panier['qte'];
   

$nbArticles=count($panier['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++)
   {
?>
----

    <?php echo $panier['code'];?>,
    <?php echo $panier['article'];?>,
    &nbsp;<?php echo $panier['qte'];?>&nbsp;,
    <?php echo $panier['prix'];?>,
    <?php echo $total;?>,
    ,

<?php
  }
}
?>

<table width="100%">
    <tr>
        <td class="Style32" width="16%"></td>
        <td class="Style32" width="16%"></td>
        <td class="Style32" width="16%"></td>
        <td class="Style32" width="16%">TOTAL</td>
        <td class="Style32" width="16%">
            <?php
            $total2 = '12';
            echo $total2;
            ?>
        </td>
        <td class="Style32" width="16%">
            <form method="post" action="vider.php"></form>
        </td>
    </tr>

</fieldset>

</html>

////////////

d'où vient mon problème, pourquoi ne puis-je pas ajouter de nouveau article? Je tourne en rond, d'habitude je bosse avec des bases de données, alors les sessions, je ne connais pas trop, et j'ai beau faire des recherches sur le net, je n'y arrive pas.

Merci de votre aide.

6 réponses

sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
24 janv. 2008 à 13:49
Salut

ici, je pense que la 1ere ligne n'est pas prise en compte,
$panier ?? est vide a mon avis

  $_SESSION['panier'] = $panier;

par contre là, les champs sont bien alimentés par le dernier post 

    $panier['article'] = $_POST['article'];
    $panier['code'] = $_POST['code'];
    $panier['qte'] = $_POST['qte'];
    $panier['prix'] = $_POST['prix'];
    $panier['tva'] = $_POST['tva'];
    $panier['poids'] = $_POST['poids'];
    $total = $panier['prix'] * $panier['qte'];
0
cs_jereln Messages postés 10 Date d'inscription mardi 5 avril 2005 Statut Membre Dernière intervention 1 octobre 2009
24 janv. 2008 à 14:04
merci de t'être penché sur mon problème.
Comment puis-je faire pour remplir mon panier? Avec mon code, pourquoi $panier est vide? Comment y remédier?
Cela vient-il de ma page index.php ?
0
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
24 janv. 2008 à 14:18
je pense que le probleme, c'est que tu n'alimentes jamais le panier !
qui normalement devrait etre  $_SESSION['panier']
je te conseille de ne conserver que le code article et la quantité dans le panier
(je suppose que tu as une table articles pour récupérer les autres infos)
suis pas un specialiste du panier, mais cherche plutot dans ce sens

la soumission de chaque formulaire devrait

1 - demarrer la session, récuperer $_SESSION['panier'] (le créér s'il, n'existe pas)
2 - ajouter les données à     $_SESSION['panier']
3-  Relire en boucle  $_SESSION['panier'] pour afficher son contenu

En fait là,  $_SESSION['panier'] est initialisée avec $panier... qui n'existe pas
tu ne fais qu'afficher les derniers $_POST
0
cs_jereln Messages postés 10 Date d'inscription mardi 5 avril 2005 Statut Membre Dernière intervention 1 octobre 2009
24 janv. 2008 à 14:38
je ne travaille pas à partir d'une base de données, je suis donc obligée de garder les autres infos.

Concernant le $_SESSION['panier'], je comprends au point de vue théorique comment il fonctionne, mais en pratique, je ne sais pas du tout comment faire :
au début de ma page index.php, j'ai le session_start();
je pense qu'il faut que je mette à la place une condition du style :
if($panier!=null){
    $_SESSION['panier'] = $panier;
    }
else     session_start();

Mais, j'ai toujours le même soucis : un seul article.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yoman64 Messages postés 962 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 2 août 2010 2
24 janv. 2008 à 19:08
Salut,

Déja le session_start tu devrais le mettre dans des vrais tags php <?php ?> au lieu des short_tags.

Dans ton code tout serais probablement à refaire, de la façon d'on tu procède tu ne peut que stocker un item, ensuite tu ne l'enregistre même pas dans la session....

Une session c'est bêtement une (ou des) variables(s) qui reste en mémoire même après que le script ait finit de s'executer, ce qui permet de les récuperer dans une autre page. Donc $_SESSION['panier'] est simplement une variable.

Ensuite pour pouvoir stocker plusieurs items ton $_SESSION['panier'] doit être un array.

Des fois j'ai l'impression que certaine personne croit que la programmation c'est de la magie

J'ai refais une partie de ton code (un peu à la vite, c'est perfectible je l'avoue :))

Pour voir ce que ça donne: http://alexou.net/jereln/
Pour voir le code source: http://alexou.net/jereln/cart.phps

Sinon tien je met le code ci dessous, puisque dans le lien existera pas éternelement.

Si ce n'est pas ce que tu voulais, dit moi le je peux t'aider à faire d'autres modifs, j'ai un peu de temps libre ces temps ci

<code><?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.,
    
    ----

        www.e3b.org  
0
cs_jereln Messages postés 10 Date d'inscription mardi 5 avril 2005 Statut Membre Dernière intervention 1 octobre 2009
24 janv. 2008 à 20:25
mille merci pour ta patience yoman64. C'est exactement ce que je voulais. J'ai compris d'où venais mon erreur. A force d'être dessus plusieurs heures par jour depuis quelques jours, je ne savais plus réléchir !!!
0
Rejoignez-nous