Formulaire et sessions

Formulaire et sessions - PHP - Programmation

Marsh Posté le 18-01-2008 à 09:44:40    

Bonjour à tous,
 
tout d'abord, je tiens à préciser que j'ai fait des recherches au sujet de mon problème, mais je n'ai rien trouvé pour le solutionner.
Je vous explique :
je dois faire une page de catalogue (avec un panier) avec quelques articles, en utilisant uniquement les sessions (pas de BDD). Chacun de ces articles a son propre bouton submit. J'ai déjà fait cette première page, mais je n'arrive pas à valider dans le panier. Comment faire pour enregistrer les données du submit correspondant à l'article choisi à l'aide des sessions ? comment faire aussi pour visualiser le panier?
 
J'espère avoir été claire.
Voici mon code du formulaire pour un article :

Code :
  1. <form method="POST" action="cart.php">
  2.                     <input type="hidden" name="code" value="ART001">
  3.     <input type="hidden" name="qte" value="1">
  4.     <input type="hidden" name="tva" value="19.6">
  5.     <input type="hidden" name="poids" value="0.300">
  6.                     <input type="submit" name="article1" value="ajouter"></form>


 
cart.php étant la page qui affiche le panier.
 
Merci pour votre aide


Message édité par jereln le 18-01-2008 à 09:45:36

---------------
N'oubliez pas : je suis débutante en php et access !!! Merci.
Reply

Marsh Posté le 18-01-2008 à 09:44:40   

Reply

Marsh Posté le 18-01-2008 à 10:05:45    

Bah tu utilises $_POST et $_SESSION dans ta page cart.php...quel est ton problème?


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 18-01-2008 à 10:18:33    

C'est bien là le problème, je n'arrive pas à afficher mon panier, je ne sais pas comment utiliser $_POST et $_SESSION.
Au début de ma page cart.php j'ai :

Code :
  1. <?
  2. session_start();
  3. ?>


 
mais ensuite, je ne sais pas comment faire...

Reply

Marsh Posté le 18-01-2008 à 10:28:27    

Bah ensuite il faut prendre ce que tu récupères dans $_POST et le mettre dans $_SESSION...
 
Doc sur $_POST: http://fr.php.net/manual/fr/reserv [...] ables.post
Doc sur les sessions : http://fr.php.net/manual/fr/ref.session.php


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 18-01-2008 à 11:25:02    

merci, c'est bon, ça marche.
Maintenant, j'ai un autre problème.
Sur mon cart.php, pour pouvoir afficher tout le panier, j'ai fait le script suivant dans una table :

Code :
  1. <?php
  2. while (empty($_SESSION['panier'])){
  3. echo '<tr>';
  4. echo'<td class="Style11" width="16%">';
  5. echo $_POST['code'];
  6. echo '</td>';
  7. echo '<td class="Style11" width="16%">';
  8. echo $_POST['article'];
  9. echo '</td>';
  10. echo '<td class="Style11" width="16%">';
  11. echo $_POST['qte'];
  12. echo '</td>';
  13. echo '<td class="Style11" width="16%">';
  14. echo $_POST['prix'];
  15. echo '</td>';
  16. echo '<td class="Style11" width="16%">';
  17. echo '</td>';
  18. echo '<td class="Style11" width="16%">';
  19. echo '</td>';
  20. echo '</tr>';
  21. echo '</tr>';
  22. }
  23. ?>


 
Mais ça m'affiche à l'infini (!) l'article du panier.
 
D'où vient mon erreur ?

Reply

Marsh Posté le 18-01-2008 à 11:40:03    

c'est ce que tu lui demandes.
Il n'y a rien dans $_SESSION['panier'] et tu lui demandes de boucler tant que c'est vide.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 18-01-2008 à 13:18:51    

ok, j'ai fait une erreur oups!
j'ai rajouté "!" devant empty. C'est bon?
 
par contre pour le $_SESSION['panier'], comment dois-je faire pour qu'il se remplisse avec le form? pourquoi rest t il vide lorsuqe je clique sur "ajouter" ?

Reply

Marsh Posté le 18-01-2008 à 13:21:31    

Le tableau $_SESSION ne se remplit pas tout seul, c'est ton boulot.
Et je ne vois pas pourquoi il se viderait et permettrait à ta boucle de se terminer.
Ce serait une bonne idée de lire la doc et les exemples sur les sessions...


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 18-01-2008 à 16:27:49    

help!!
je n'y arrive pas, pas moyen de remplir le tableau, j'ai beau regardé les docs, je n'y arrive pas. :cry:

Reply

Marsh Posté le 18-01-2008 à 20:46:33    

Okay alors en rapide  :
 
Les tableaux $_GET et $_POST se remplissent automatiquement, mais sont éphémères car définis par rapport à un contexte. Ce contexte est l'ensemble des données reçues par la page. Autrement dit dès que tu passes à une autre page, ce contexte change et tes données sont perdues... à moins de les sauvegarder dans le tableau $_SESSION !
 
Cf le message de skeye :

skeye a écrit :

Bah ensuite il faut prendre ce que tu récupères dans $_POST et le mettre dans $_SESSION...


 
Je disais donc, $_GET et $_POST se remplissent automatiquement :
 

  • $_GET lorsque tu reçois des paramètres en provenance d'une url

        Exemple si l'url est http://www.toto.com?param1=am&param2=stram&param3=gram
        $_GET['param1'] vaut 'am'
        $_GET['param1'] vaut 'stram'
        $_GET['param1'] vaut 'gram'
 

  • $_POST lorsque tu envoies un formulaire avec (<form ... method='POST'> )

        Pareil, tu utilises $_POST['nomdetavariable'] pour récupérer les valeurs qui t'intéressent.
 
Dans le cas de $_SESSION, tu dois toi-même affecter les valeurs.
 
 
Exemple, dans la page où tu reçois des données à sauvegarder :

Code :
  1. if (isset($_POST['article'])) {
  2.  // L'article existe et a été envoyé depuis un formulaire
  3.  
  4.  // On le sauvegarde en tant que variable session
  5.  // pour le réutiliser dans une autre page
  6.  $_SESSION['article'] = $_POST['article'];
  7. }


 
Et dans une autre page :

Code :
  1. echo 'Héhé voici le contenu de mon panier : '.$_SESSION['article'];


Message édité par CyberDenix le 18-01-2008 à 20:56:49

---------------
Directeur Technique (CTO)
Reply

Marsh Posté le 18-01-2008 à 20:46:33   

Reply

Marsh Posté le 19-01-2008 à 14:11:11    

bonjour CyberDenix,
 
merci pour le coup de main, c'est ce que je faisais, mais j'avais une erreur. Mais maintenant c'est resolu!!


Message édité par jereln le 19-01-2008 à 14:27:15
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed