Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1753 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°987264
pommette
Posté le 19-02-2005 à 22:25:41  profilanswer
 

: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
mood
Publicité
Posté le 19-02-2005 à 22:25:41  profilanswer
 

n°987312
omega2
Posté le 20-02-2005 à 00:07:41  profilanswer
 

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
n°987332
pommette
Posté le 20-02-2005 à 00:28:46  profilanswer
 

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:  
 
+
 
 
 
 

n°987343
drone
Posté le 20-02-2005 à 00:39:11  profilanswer
 

utilise les cookies ;)

n°987366
pommette
Posté le 20-02-2005 à 00:45:34  profilanswer
 

drone a écrit :

utilise les cookies ;)


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

n°987372
omega2
Posté le 20-02-2005 à 00:48:42  profilanswer
 

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. ;)

n°987373
omega2
Posté le 20-02-2005 à 00:49:23  profilanswer
 

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. ;)

n°987387
pommette
Posté le 20-02-2005 à 00:55:46  profilanswer
 

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 :)
++

n°987396
omega2
Posté le 20-02-2005 à 00:58:48  profilanswer
 

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. :)

n°987464
pommette
Posté le 20-02-2005 à 02:11:19  profilanswer
 

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 :)
 
++


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

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

 

Sujets relatifs
Fonction qui retourne différent type de valeur.[C] Communication processus sous windows[Resolu]
Jai perdu ma source + prob ouvrir nouvelle fenetre [Resolu][Java] Dessin dans un buffer affiché par paint => problème RESOLU
[Résolu !] liste déroulante dépendante (valeur non gardée)[C#/VB.NET] [Résolu] Equivalent de GetObject ?
[resolu]Texte inséré automatiquement dans formulairepb avec une chaine de caractères [RESOLU]
detruire $_POST['variable'] ... 
Plus de sujets relatifs à : garder la valeur d'une variable[résolu]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR