garder la valeur d'une variable[résolu]

garder la valeur d'une variable[résolu] - PHP - Programmation

Marsh Posté le 19-02-2005 à 22:25:41    

:hello: Bonsoir,
 
Je me retrouve une nouvelle fois avec un léger problème, explication :
 
J'ai une série de formulaire dont les valeurs seront inscrites dans une BDD. Cela fonctionne sans problème.
 
J'ai voulu rajouter une option : je me suis dit que ce serait bien d'afficher les valeurs à l'écran pour vérification, puis un SUBMIT fait l'écriture dans la BDD.  
 
Malheureusement, je tourne en rond. L'affichage se fait et j'ai l'impression que mes variables sont purgées pour mon second submit, il n'y a plus rien pour écrire dans la BDD.  
 
Voilà un de mes dernier code :
 

Code :
  1. if(isset($_POST['ok']) and isset($_POST['listeproduits']) and isset($_POST['nombre']) and isset($_POST['jour'])
  2. and isset($_POST['mois']) and isset($_POST['annee']) and !empty($_POST['nombre']))
  3. {
  4. $p=$_POST['listeproduits'];
  5. $n=$_POST['nombre'];
  6. $j=$_POST['jour'];
  7. $m=$_POST['mois'];
  8. $a=$_POST['annee'];
  9. $d=$a.'-'.$m.'-'.$j;
  10. echo 'voulez-vous ajouter en date du '.$d.'  '.$n.'  '.$p.' à la base ?';
  11. if(isset($_POST['valider']))
  12. {
  13. $sql=("INSERT INTO achats(ref, quantité, dateachat) VALUES ('$p','$n','$d')" );
  14. mysql_query($sql) or die('Erreur SQL'.$sql.'<br>'.mysql_error());
  15. echo 'enregistrement ok';
  16. }
  17. }


 
Merci :)
++


Message édité par pommette le 20-02-2005 à 02:12:54
Reply

Marsh Posté le 19-02-2005 à 22:25:41   

Reply

Marsh Posté le 20-02-2005 à 00:07:41    

Ca serait peut être bien de renvoyer à nouveaux toutes les données pour qu'elles existent au niveau de php quand la validation est faite.
Il faut savoir que les variables créer pour l'exécution d'un script php n'existent plus pendant l'exécution du script suivant sauf si on les recré. Et c'est tout aussi valable si on relance le même script depuis le même navigateur. ;)  
Mais là, tu ne nous montres pas la partie servant à créer la page servant à valider alors c'est impossible de dire ce qu'il y a à modifier précisément.


Message édité par omega2 le 20-02-2005 à 00:08:52
Reply

Marsh Posté le 20-02-2005 à 00:28:46    

omega2 a écrit :

Ca serait peut être bien de renvoyer à nouveaux toutes les données pour qu'elles existent au niveau de php quand la validation est faite.
Il faut savoir que les variables créer pour l'exécution d'un script php n'existent plus pendant l'exécution du script suivant sauf si on les recré. Et c'est tout aussi valable si on relance le même script depuis le même navigateur. ;)  
Mais là, tu ne nous montres pas la partie servant à créer la page servant à valider alors c'est impossible de dire ce qu'il y a à modifier précisément.


 
Merci pour ta réponse :)  
 
1/ En fait le formulaire suivant écrit bien dans ma BDD, aucun souci ça fonctionne :
 

Code :
  1. if(isset($_POST['listeproduits']) and isset($_POST['nombre']) and isset($_POST['jour'])
  2. and isset($_POST['mois']) and isset($_POST['annee']) and !empty($_POST['nombre']))
  3. {
  4. $p=$_POST['listeproduits'];
  5. $n=$_POST['nombre'];
  6. $j=$_POST['jour'];
  7. $m=$_POST['mois'];
  8. $a=$_POST['annee'];
  9. $d=$a.'-'.$m.'-'.$j;
  10. extract($_POST);
  11. $sql=("INSERT INTO achats(ref, quantité, dateachat) VALUES ('$p','$n','$d')" );
  12. mysql_query($sql) or die('Erreur SQL'.$sql.'<br>'.mysql_error());
  13. echo 'enregistrement ok';
  14. }


 
2/Donc d'après ce que tu me dis, si j'affiche à l'écran mes valeurs avec un 1er SUBMIT, elles sont ensuite effacées pour qu'un second SUBMIT execute l'écriture dans ma BDD.
 
3/ Je ne veux pas renvoyer les valeurs, cela obligerait à remplir à nouveau le formulaire.
 
4/ Comment fonctionne les sites de vente en ligne qui affiche la commande qu'on a rempli puis nous propose de justement valider la commande ?
En résumé, comment puis-je stocker mes valeurs pour une seconde utilisation ? Carrément dans une table temporaire de ma BDD ?
 
 :pt1cable:  
 
+
 
 
 
 

Reply

Marsh Posté le 20-02-2005 à 00:39:11    

utilise les cookies ;)

Reply

Marsh Posté le 20-02-2005 à 00:45:34    

drone a écrit :

utilise les cookies ;)


 
 :hello:  
 
Je n'ai pas encore fait la leçon cookie, ça tombe bien, je vais voir ça :)
 
++

Reply

Marsh Posté le 20-02-2005 à 00:48:42    

J'ai jaùmais conçu ce genre de site, mais moi, j'utiliserait un identifiant propre à chaque visiteur.
Quand il choisit un article, on écrit dans la table "cadie" le choix du produit en notant que c'est cet utilisateur qui l'a choisit.
Ensuite, au moment de vérifier le contenu du cadie, je regarde la liste des articles corespondant à l'identifiant de l'utilisateur qui fait cette demande et je lui réaffiche tout ça. J'utiliserais aussi la table "produit" pour calculer le total de la commande et indiquer le prix en vigueur pour chaque produit. :) S'il faut prendre le prix à l'instant de la sélection du produit, il faut le noter dans la table "cadie" et ne pas utiliser directement celui de la table "produit".
Au moment de la demande du récapitulation, on note dans la table "recapitulatif" la date/heure de demande du récapitulatif, le total de la commande, le nombre de produit sélectionné et la date/heure de la derniére sélection d'un produit et dans la table "recap_produit" les infos qui seraient suceptible de changer entre une demande de récapitulatif et la commande elle même. (prix du produit par exemple)
A la validation de la comande, on vérifie s'il y a eu changement dans la commande (auquel cas on repase par le récapitulatif en indiquant que la commande à changé) et on utilise les tables "récapitulatif", "cadies" et "recap_produit" pour produire la facture, lancer la commande en elle même et créer la page de paiement. Quoi que, en général, c'est la banque qui s'occupe de la page des paiement. Quand on valide la commande, ca envoie sur le serveur de la banque qui renvoie ensuite sur le serveur de la boite afin de noter que la commande à bien été payé et donc de lancer la procédure d'envoie des produits commandés.
 
Voilà les étapes que je ferais et quelles tables j'utiliserais. J'espéres que ca t'éclairerais un peu plus.  
 
Ha oui, il faut penser à effacer les données périmés, à cause notament de ceux qui remplissent un cadie voire qui demandent le contenu du cadie ou le récapitulation de la commande mais qui la valident jamais. ;)

Reply

Marsh Posté le 20-02-2005 à 00:49:23    

drone a écrit :

utilise les cookies ;)

Et s'il tombe sur quelqu'un qui bloque le cookie de son site, il a l'air malin. ;)

Reply

Marsh Posté le 20-02-2005 à 00:55:46    

omega2 a écrit :

J'ai jaùmais conçu ce genre de site, mais moi, j'utiliserait un identifiant propre à chaque visiteur.
Quand il choisit un article, on écrit dans la table "cadie" le choix du produit en notant que c'est cet utilisateur qui l'a choisit.
Ensuite, au moment de vérifier le contenu du cadie, je regarde la liste des articles corespondant à l'identifiant de l'utilisateur qui fait cette demande et je lui réaffiche tout ça. J'utiliserais aussi la table "produit" pour calculer le total de la commande et indiquer le prix en vigueur pour chaque produit. :) S'il faut prendre le prix à l'instant de la sélection du produit, il faut le noter dans la table "cadie" et ne pas utiliser directement celui de la table "produit".
Au moment de la demande du récapitulation, on note dans la table "recapitulatif" la date/heure de demande du récapitulatif, le total de la commande, le nombre de produit sélectionné et la date/heure de la derniére sélection d'un produit et dans la table "recap_produit" les infos qui seraient suceptible de changer entre une demande de récapitulatif et la commande elle même. (prix du produit par exemple)
A la validation de la comande, on vérifie s'il y a eu changement dans la commande (auquel cas on repase par le récapitulatif en indiquant que la commande à changé) et on utilise les tables "récapitulatif", "cadies" et "recap_produit" pour produire la facture, lancer la commande en elle même et créer la page de paiement. Quoi que, en général, c'est la banque qui s'occupe de la page des paiement. Quand on valide la commande, ca envoie sur le serveur de la banque qui renvoie ensuite sur le serveur de la boite afin de noter que la commande à bien été payé et donc de lancer la procédure d'envoie des produits commandés.
 
Voilà les étapes que je ferais et quelles tables j'utiliserais. J'espéres que ca t'éclairerais un peu plus.  
 
Ha oui, il faut penser à effacer les données périmés, à cause notament de ceux qui remplissent un cadie voire qui demandent le contenu du cadie ou le récapitulation de la commande mais qui la valident jamais. ;)


 
Re,
 
Ok, je vois la manipulation.  
Donc j'ai le choix entre me servir de ma BDD, de me servir d'un cookie et d'après ce que je viens lire il y'a 1 mn, de me servir d'une session.
 
Merci :)
++

Reply

Marsh Posté le 20-02-2005 à 00:58:48    

la session est surement mieux que les cookie :
- la session marche même si le cookie est refusé
- les données contenu dans la session ne peuvent pas être modifié par le visiteur
 
Mais c'est vrai que la session rajoute un petite difficulté mais une fois vaincu une fois, ce n'est pas plus dur à utiliser qu'un cookie. :)

Reply

Marsh Posté le 20-02-2005 à 02:11:19    

omega2 a écrit :

la session est surement mieux que les cookie :
- la session marche même si le cookie est refusé
- les données contenu dans la session ne peuvent pas être modifié par le visiteur
 
Mais c'est vrai que la session rajoute un petite difficulté mais une fois vaincu une fois, ce n'est pas plus dur à utiliser qu'un cookie. :)


 
Je viens de faire quelques tests en utilisant $_SESSION, c'est excellent :love: : c'est ce qu'il me fallait :)
 
++

Reply

Sujets relatifs:

Leave a Replay

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