begin process at 2010 02 09 23:18:48
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Débutant(e)

 > 

problème de panier et session


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

problème de panier et session

jeudi 24 janvier 2008 à 10:58:10 | problème de panier et session

jereln

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>

<body>
<table width="100%">
    <tr>
        <td class="Style1"><p></p><p>Ma boutique en ligne.</p></td>
    </tr>
    <tr>
        <td class="Style2">Panier ( )</td>
</table>
<fieldset>
    <legend align="left">
    <span id="cadre">Articles</span>
    </legend>
<table width="100%">
    <tr>
        <td>
        <table class="Style3">
            <tr>
                <td colspan="2" class="Style4">Canard de bain</td>
            </tr>
            <tr>
                <td><img src="images/canard.gif" title="Canard de bain" height="100" width="100"></td>
                <td><p>Un compagnon de jeu pour le bain.</p>
                    <p><b>2.99 Eur</b></p>
                    <p><form method="POST" action="cart.php">
                    <input type="hidden" name="code" value="ART001">
                    <input type="hidden" name="article" value="canard">
                    <input type="hidden" name="qte" value="1">
                    <input type="hidden" name="prix" value="2.99">
                    <input type="hidden" name="tva" value="19.6">
                    <input type="hidden" name="poids" value="0.300">
                    <input type="submit" name="ajouter" value="ajouter"></form></p>
                  </td>
            </tr>
        </table>
        </td>
        <td>
        <table class="Style3">
            <tr>
                <td colspan="2" class="Style4">Compas</td>
            </tr>
            <tr>
                <td><img src="images/compas.jpg" title="Compas" height="100" width="100"></td>
                <td><p>Pour ne pas perdre le nord.</p>
                    <p><b>9.95 Eur</b></p>
                    <p><form method="POST" action="cart.php">
                    <input type="hidden" name="code" value="ART002">
                    <input type="hidden" name="article" value="Compas">
                    <input type="hidden" name="qte" value="1">
                    <input type="hidden" name="prix" value="9.95">
                    <input type="hidden" name="tva" value="19.6">
                    <input type="hidden" name="poids" value="0.900">
                    <input type="submit" name="ajouter" value="ajouter"></form></p>
                </td>
            </tr>
        </table>
        </td>
        <td>
        <table class="Style3">
            <tr>   
                <td colspan="2" class="Style4">Aquarium et poisson rouge</td>
            </tr>
            <tr>
                <td><img src="images/aquarium.jpg" title="Aquarium" height="100" width="100"></td>
                <td><p>Pour passer le temps.</p>
                    <p><b>24.95 Eur</b></p>
                    <p><form method="POST" action="cart.php">
                    <input type="hidden" name="code" value="ART003">
                    <input type="hidden" name="article" value="Aquarium">
                    <input type="hidden" name="qte" value="1">
                    <input type="hidden" name="prix" value="24.95">
                    <input type="hidden" name="tva" value="19.6">
                    <input type="hidden" name="poids" value="3.500">
                    <input type="submit" name="aquarium" value="ajouter"></form></p>
                </td>
            </tr>
        </table>
        </td>
        <td>
        <table class="Style3">
            <tr>
                <td colspan="2" class="Style4">Boite à lettres</td>
            </tr>
            <tr>
                <td><img src="images/boite.gif" title="Boite à lettres" height="100" width="100"></td>
                <td><p>Vous avez du courrier.</p>
                    <p><b>12.99 Eur</b></p>
                    <p><form method="POST" action="cart.php">
                    <input type="hidden" name="code" value="ART004">
                    <input type="hidden" name="article" value="Boite à lettres">
                    <input type="hidden" name="qte" value="1">
                    <input type="hidden" name="prix" value="12.99">
                    <input type="hidden" name="tva" value="19.6">
                    <input type="hidden" name="poids" value="5.000">
                    <input type="submit" name="boite" value="ajouter"></form></p>
                </td>
            </tr>
        </table>
        </td>
    </tr>
</table>
</fieldset>

<p>(c) 2008 - Ma Boutique en ligne - 1.0.0</p>
</body>
</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>

<body>
<table width="100%">
    <tr>
        <td class="Style1"><p></p><p>Ma boutique en ligne.</p></td>
    </tr>
    <tr>
        <td class="Style2"><a href="index.php">Articles</a> | <a href="invoice.php">Paiement</a></td>
</table>

<?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">
    <span id="cadre">Panier</span>
    </legend>

<table width="100%">
    <tr>
        <td class="Style11" width="16%">Code article</td>
        <td class="Style11" width="16%">Produit</td>
        <td class="Style11" width="16%">Quantité</td>
        <td class="Style11" width="16%">Prix</td>
        <td class="Style11" width="16%">Total</td>
        <td class="Style11" width="16%"></td>
    </tr>
<?php
   for ($i=0 ;$i < $nbArticles ; $i++)
   {
?>
<tr>
    <td class="Style3" width="16%"><?php echo $panier['code'];?></td>
    <td class="Style31" width="16%"><?php echo $panier['article'];?></td>
    <td class="Style3" width="16%"><img src="images/moins.gif">&nbsp;<?php echo $panier['qte'];?>&nbsp;<img src="images/plus.gif"></td>
    <td class="Style3" width="16%"><?php echo $panier['prix'];?></td>
    <td class="Style3" width="16%"><?php echo $total;?></td>
    <td class="Style3" width="16%"></td>
</tr>
<?php
  }
}
?>

</table>
<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"><input type="button" value="vider" name="vider"></form>
        </td>
    </tr>

</fieldset>
</body>
</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.

jeudi 24 janvier 2008 à 13:49:45 | Re : problème de panier et session

sidf

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'];
jeudi 24 janvier 2008 à 14:04:27 | Re : problème de panier et session

jereln

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 ?

jeudi 24 janvier 2008 à 14:18:44 | Re : problème de panier et session

sidf

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


jeudi 24 janvier 2008 à 14:38:28 | Re : problème de panier et session

jereln

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.
jeudi 24 janvier 2008 à 19:08:21 | Re : problème de panier et session

yoman64

Membre Club
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: [ Lien ]
Pour voir le code source: [ Lien ]

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

<?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>

<body>
<table width="100%">
    <tr>
        <td class="Style1"><p></p><p>Ma boutique en ligne.</p></td>
    </tr>
    <tr>
        <td class="Style2"><a href="index.php">Articles</a> | <a href="invoice.php">Paiement</a></td>
</table>

<?php
  
if (isset($_POST['code']))
  {
    
$_SESSION['panier'][$_POST['code']]['article'] = $_POST['article'];
    
$_SESSION['panier'][$_POST['code']]['code'] = $_POST['code'];
    
$_SESSION['panier'][$_POST['code']]['qte'] += $_POST['qte'];
    
$_SESSION['panier'][$_POST['code']]['prix'] = $_POST['prix'];
    
$_SESSION['panier'][$_POST['code']]['tva'] = $_POST['tva'];
    
$_SESSION['panier'][$_POST['code']]['poids'] = $_POST['poids'];
  }

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

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

<fieldset>
    <legend align="left">
    <span id="cadre">Panier</span>
    </legend>

<table width="100%">
    <tr>
        <td class="Style11" width="16%">Code article</td>
        <td class="Style11" width="16%">Produit</td>
        <td class="Style11" width="16%">Quantité</td>
        <td class="Style11" width="16%">Prix</td>
        <td class="Style11" width="16%">Total</td>
        <td class="Style11" width="16%"></td>
    </tr>
<?php
   
foreach ($_SESSION['panier'] as $art => $extra)
   {
?>
<tr>
    <td class="Style3" width="16%"><?php echo $art;?></td>
    <td class="Style31" width="16%"><?php echo $extra['article'];?></td>
    <td class="Style3" width="16%"><img src="images/moins.gif">&nbsp;<?php echo $extra['qte'];?>&nbsp;<img src="images/plus.gif"></td>
    <td class="Style3" width="16%"><?php echo $extra['prix'];?></td>
    <td class="Style3" width="16%"><?php echo $extra['prix']*$extra['qte'];?></td>
    <td class="Style3" width="16%"></td>
</tr>
<?php
  $total 
+= ($extra['prix']*$extra['qte']);
  }
}
?>

</table>
<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
            
echo $total;
            
?>
        </td>
        <td class="Style32" width="16%">
            <form method="post" action="vider.php"><input type="button" value="vider" name="vider"></form>
        </td>
    </tr>

</fieldset>
</body>
</html>

-------------------
Vous cherchez un hebergement Php/MySQL Gratuit et sans publicités ??
Et bien c'est la : www.e3b.org  
jeudi 24 janvier 2008 à 20:25:01 | Re : problème de panier et session

jereln

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



Cette discussion est classée dans : page, session, post, article, panier


Répondre à ce message

Sujets en rapport avec ce message

panier : je ne m'en sors pas.... [ par jereln ] 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 ar balise div et select [ par yop59 ] bonjour j'ai un gros souci,, cea fait 2jours que j'essai dans une table de type div contenant un article, un qte de modifier la qte avec un select et l'usage des sessions en php [ par Marcelinos ] BonjourJe suis débutant en php et j'ai un sérieux problème que voici:j' ai un formulaire de saisie réparti sur plusieurs pages à savoir page1.php,page Pseudo frames et panier, perte de session... [ par alphacrash ] Bonjour !Voila mon soucis, je pense assez connu, j'utilise les pseudo frames donc une page index qui contient au debut un session_start() et cette pag Problème de panier avec $_SESSION [ par ragmo ] Bonjour à tous,Depuis ce matin j'ai un problème sur un ensemble de scripts de gesion de panier qui marchait [très] bien. Le message est : "Cannot use $_POST ne récupère pas les infos d'une page à l'autre [ par ragmo ] Bonjour à tous, Je vous expose mon souci : Sur une page produits j'ai les produits affichés, chacun dans son cadre avec les liens "En savoir plus .." incohérence serveur local et distant [ par garudra ] Bonjour et bonnes fêtes! je construis une boutique en ligne, mon panier fonctionne parfaitement en local, et pas du tout sur le site distant.Quelles caddie => pb de chaine de caractere [ par attentio ] bonjour a tous !voila C pour un caddie.tout fonctionne a peu pres bien sauf que je voudrais ajouter une chaine de caractere a $nouvel_article donc rem session_start ou autre chose... ? [ par elisaba ] bonjour, j'ai une page a accès login + pass avec accès formulaire + test + la page en php. j'ai bien mon dossier sessions, à priori ca defrait foncti panier session [ par chevaliero ] Bonjour à tous,J'ai réalisé un carnet (caddie) de voyage pour récuperer 2 informations : ID - NOM.Cela fonctionne impeccable en local.Par contre en tr


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,827 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales