Session

Session - PHP - Programmation

Marsh Posté le 16-03-2005 à 10:57:48    

Bonjour
 
J'aimerai recuperer une variable de formulaire et l'enregistrer dans ma session. Quand j'envoie le formulaire en ayant au préalable rempli le champ montant, il m'affiche toujours la valeur "0" pour le montant.  
Je précise que la la page ou j' désire afficher la valeur du champ montant est la même que celle ou se trouve le champ.
Voici mon code :
 

Code :
  1. session_start();
  2. if(isset($_POST['montant']))
  3. {
  4. $_SESSION['montant'] = $_POST['montant'];
  5. }
  6. else
  7. {
  8. $_SESSION['montant'] = 0;
  9. }
  10. ...
  11. <?echo  $_SESSION['montant'];?>

Reply

Marsh Posté le 16-03-2005 à 10:57:48   

Reply

Marsh Posté le 16-03-2005 à 11:02:20    

skynicko a écrit :

Je précise que la la page ou j' désire afficher la valeur du champ montant est la même que celle ou se trouve le champ.


J'ai pas trop compris...[:urd]
Fais un print_r($_POST) en début de page...


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

Marsh Posté le 16-03-2005 à 11:02:23    

tu peu mettre le code de l'envoi par formulaire de ta variable montant stp...


Message édité par baster_baster le 16-03-2005 à 11:02:43

---------------
Pas le temps... Ou pas envie de le prendre ?
Reply

Marsh Posté le 16-03-2005 à 11:13:25    

Mon formulaire en fait il est traité par une autre page qui insere le montant dans une base de donnée et qui fait une redirection vers la page ou on a rempli le formulaire.
 
Je pensais qu'avec le code que j'ai mis plus haut ça suffisait pour recuperer la valeur de champ.


Message édité par skynicko le 16-03-2005 à 11:13:35
Reply

Marsh Posté le 16-03-2005 à 11:14:43    

skynicko a écrit :

Mon formulaire en fait il est traité par une autre page qui insere le montant dans une base de donnée et qui fait une redirection vers la page ou on a rempli le formulaire.
 
Je pensais qu'avec le code que j'ai mis plus haut ça suffisait pour recuperer la valeur de champ.


euh oui mais si t'es plus sur la page cible de ton formulaire t'as plus rien dans $_POST hein!:o


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

Marsh Posté le 16-03-2005 à 11:16:30    

skeye a écrit :

J'ai pas trop compris...[:urd]
Fais un print_r($_POST) en début de page...


 
Je recharge tout le temps la même page.  
Sur ce shéma la :
 
monformulaire.php --> c'est sur cette page que se trouve le code que je vous ai posté plus haut.
 
traitementformulaire.php --> quand j'envoie mon formulaire cette page effectue une instertion dans la base puis un header("location" ) sur monformulaire.php.

Reply

Marsh Posté le 16-03-2005 à 11:18:15    

skeye a écrit :

euh oui mais si t'es plus sur la page cible de ton formulaire t'as plus rien dans $_POST hein!:o


Oui tu as raison. Est ce que je dois aussi mettre ce code dans la page qui traite mon formulaire ?
ou est ce que je dois mettre le code de traitement du formulaire dans la page du formulaire elle meme ?
J'ai du mal  :pt1cable:

Reply

Marsh Posté le 16-03-2005 à 11:18:25    

skynicko a écrit :

Je recharge tout le temps la même page.  
Sur ce shéma la :
 
monformulaire.php --> c'est sur cette page que se trouve le code que je vous ai posté plus haut.
 
traitementformulaire.php --> quand j'envoie mon formulaire cette page effectue une instertion dans la base puis un header("location" ) sur monformulaire.php.


c'est bien ce que je dis. tu n'as plus rien dans $_POST une fois que tu fais une header("Location: monformulaire.php" ).
Donc ta méthode ne peut pas marcher...il faut que tu mettes le code que tu as posté dans traitementformulaire.php.


Message édité par skeye le 16-03-2005 à 11:19:16

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

Marsh Posté le 16-03-2005 à 11:23:08    

oh ça marche ça y est merci bien tout le monde pour votre aide

Reply

Marsh Posté le 16-03-2005 à 11:35:25    

J'en ai une petite derniere pour la route. Je recupere bien la valeur du champ montant que je peux promener de pages en pages.
Par contre j'aimerai aussi recuperer le numero de la commande qui lui est généré depuis la page de traitement du formulaire.
 
j'ai fait de cette manière mais je n'ai rien qui s'affiche :
 

Code :
  1. $_SESSION['paiement_num_facture'] = $_GET['paiement_num_facture'];


Message édité par skynicko le 16-03-2005 à 11:35:41
Reply

Marsh Posté le 16-03-2005 à 11:35:25   

Reply

Marsh Posté le 16-03-2005 à 11:46:34    

skynicko a écrit :

J'en ai une petite derniere pour la route. Je recupere bien la valeur du champ montant que je peux promener de pages en pages.
Par contre j'aimerai aussi recuperer le numero de la commande qui lui est généré depuis la page de traitement du formulaire.
 
j'ai fait de cette manière mais je n'ai rien qui s'affiche :
 

Code :
  1. $_SESSION['paiement_num_facture'] = $_GET['paiement_num_facture'];



 
Il est censé être envoyé à ta page comment, ton paiement_num_facture? Via le formulaire ou l'url?


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

Marsh Posté le 16-03-2005 à 11:51:14    

enfin tu parles il est envoyé comment depuis la page de traitement quand je reviens sur la pae du formulaire ?


Message édité par skynicko le 16-03-2005 à 11:52:01
Reply

Marsh Posté le 16-03-2005 à 11:51:23    

ben ouais si ca se trouve c'est le meme problème que la première :d


---------------
Pas le temps... Ou pas envie de le prendre ?
Reply

Marsh Posté le 16-03-2005 à 11:52:10    


url pointant vers quelle page, et tu essaies de la récupérer dans quelle page?:o


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

Marsh Posté le 16-03-2005 à 11:53:16    

je pense pas parce que le paiement_num_facture il est pas envoyé en post

Reply

Marsh Posté le 16-03-2005 à 11:54:55    

skynicko a écrit :

je pense pas parce que le paiement_num_facture il est pas envoyé en post


c'est pas pour ça que le tableau $_GET est toujours valide quand tu changes de page hein...[:itm]


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

Marsh Posté le 16-03-2005 à 11:58:58    

C'est le code de traitement de mon formulaire. C'est la que je veux recuperer la valeur de mon numero de facture pour l'enregistrer dans la session. Mais j'ai pas compris comment je dois faire.
 
Je debute, c'est les erreurs de jeunesses
 

Code :
  1. session_start();
  2. if(isset($_POST['montant']))
  3. {
  4. $_SESSION['paiement_num_facture'] = $_GET['paiement_num_facture'];
  5. $_SESSION['montant'] = $_POST['montant'];
  6. }
  7. else
  8. {
  9. $_SESSION['montant'] = 0;
  10. }
  11. if(isset($_GET['action']) && $_GET['action'] == 'ajout')
  12.     {
  13. if(!empty($_POST['montant']))
  14. {
  15. $montant = trim($_POST['montant']);
  16. mysql_select_db($database_dbprotect, $dbprotect);
  17. $query_factures="SELECT paiement_num_facture FROM tab_paiement ORDER BY paiement_num_facture DESC";
  18. $factures = mysql_query($query_factures, $dbprotect) or die(mysql_error());
  19. $lignes_factures = mysql_fetch_assoc($factures);
  20. $num_facture=$lignes_factures['paiement_num_facture']+1;
  21. $query_ins_paiement = "INSERT INTO tab_paiement(paiement_id, paiement_num_facture, paiement_montant) VALUES('','$num_facture','$montant')";
  22. mysql_query($query_ins_paiement) or die('Erreur SQL !'.$query_ins_paiement.'<br>'.mysql_error());
  23.  
  24.     header("Location:../accueil.php?erreur=envoye" );
  25. }


Message édité par skynicko le 16-03-2005 à 11:59:41
Reply

Marsh Posté le 16-03-2005 à 12:00:18    

si tu appelles bien cette page en passant paiement_num_facture dans l'url ça doit marcher.


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

Marsh Posté le 16-03-2005 à 12:01:17    

dans le header("location" ) j'ai le droit de passer paiement_num dans l'url ?

Reply

Marsh Posté le 16-03-2005 à 12:02:45    

skynicko a écrit :

dans le header("location" ) j'ai le droit de passer paiement_num dans l'url ?


 
:heink:
J'ai pas l'impression que ce soit très clair, tout ça...[:dawa]
Montre ton formulaire...


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

Marsh Posté le 16-03-2005 à 12:07:34    

Code :
  1. <form action="traitements/ajout_facture.php?action=ajout" method="post" class="form" name="form_paiement" onSubmit="verif_montant()">
  2. <label for="montant">Montant de la transaction :</label>
  3. <input type="text" name="montant" id="montant"  />&nbsp;&euro;       
  4.        
  5. <label for="bouton">&nbsp;</label>
  6. <input type="submit" name="bouton" id="bouton"   value="Envoyer" />
  7. </form>

Reply

Marsh Posté le 16-03-2005 à 12:08:58    

et ton paiement_num_truc il est où là? [:wam]


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

Marsh Posté le 16-03-2005 à 12:11:13    

il n'est pas dans le formulaire puisque je l'insere dans la page traitement. IL faut que les numeros se suivent pour les factures. Donc je fais un select sur ma base je recupere la valeur de paiement_num_.. et je l'incremente de 1 puis je l'insere
 

Code :
  1. $query_factures="SELECT paiement_num_facture FROM tab_paiement ORDER BY paiement_num_facture DESC";
  2. ...
  3. $num_facture=$lignes_factures['paiement_num_facture']+1;
  4. $query_ins_paiement = "INSERT INTO tab_paiement(paiement_id, paiement_num_facture, paiement_montant) VALUES('','$num_facture','$montant')";


 
Il faut que je puisse le recupere depuis cette page donc. J'explique vraiment comme une chevre


Message édité par skynicko le 16-03-2005 à 12:14:01
Reply

Marsh Posté le 16-03-2005 à 12:14:45    

[:ciler]
Je comprends rien à comment s'organisent tes pages, dans quelle page est chaque bout de code, et ce que tu cherches exactement à obtenir, là...[:joce]
Tu peux nous faire un récapitulatif exact de l'enchainement de tes pages et des variables que tu passes à chaque page, par quel moyen, et quelles variables tu veux dans chaque page? :whistle:


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

Marsh Posté le 16-03-2005 à 14:15:41    

j'ai une page avec mon formulaire que l'on appelera formulaire.php. Dans cette page l'utilisateur saisi uniquement  le montant de la commande en euros.
C'est dans cette page que je veux recupérer et afficher le numero de facture et le montant de la commande.
 

Code :
  1. Montant:<?echo  $_SESSION['montant'];?> // Le montant s'affiche c'est ok
  2. Numero de facture:<?echo  $_SESSION['num_facture'];?> // Le numero de facture s'affiche pas
  3. <form action="traitements/ajout_facture.php?action=ajout" method="post" class="form" name="form_paiement" onSubmit="verif_montant()">                                 
  4.            
  5. <label for="montant">Montant de la transaction :</label>
  6. <input type="text" name="montant" id="montant"  />&nbsp;&euro;
  7. </form>


 
Quand j'envoie le formulaire la page traitement_formulaire.php insere les données dans la base à savoir l'id, le numero de commande, le montant. Puis elle enregistre le montant de la commande dans une variable de session. Elle doit faire la même chose pour le numero de facture mais comme elle est pas transmise en post comme le montant mais inseré directement depuis cette page je voix pas comment je dois faire.
 

Code :
  1. session_start();
  2. if(isset($_POST['montant']))
  3. {
  4. $_SESSION['paiement_num_facture'] = $_GET['paiement_num_facture'];
  5. $_SESSION['montant'] = $_POST['montant'];
  6. }
  7. else
  8. {
  9. $_SESSION['montant'] = 0;
  10. }
  11. if(isset($_GET['action']) && $_GET['action'] == 'ajout')
  12.     {
  13. if(!empty($_POST['montant']))
  14. {
  15. $montant = trim($_POST['montant']);
  16. mysql_select_db($database_dbprotect, $dbprotect);
  17. $query_factures="SELECT paiement_num_facture FROM tab_paiement ORDER BY paiement_num_facture DESC"; // requête sur la table paiement
  18. $factures = mysql_query($query_factures, $dbprotect) or die(mysql_error());
  19. $lignes_factures = mysql_fetch_assoc($factures);
  20. $num_facture=$lignes_factures['paiement_num_facture']+1;
  21. $query_ins_paiement = "INSERT INTO tab_paiement(paiement_id, paiement_num_facture, paiement_montant) VALUES('','$num_facture','$montant')";
  22. ... 
  23. header("Location:../accueil.php?erreur=envoye&paiement_num_facture=$_GET['paiement_num_facture']" );
  24. // redirection vers la page formulaire


Message édité par skynicko le 16-03-2005 à 14:18:01
Reply

Marsh Posté le 16-03-2005 à 14:31:34    

skynicko a écrit :

j'ai une page avec mon formulaire que l'on appelera formulaire.php. Dans cette page l'utilisateur saisi uniquement  le montant de la commande en euros.
C'est dans cette page que je veux recupérer et afficher le numero de facture et le montant de la commande.
 
Quand j'envoie le formulaire la page traitement_formulaire.php insere les données dans la base à savoir l'id, le numero de commande, le montant. Puis elle enregistre le montant de la commande dans une variable de session. Elle doit faire la même chose pour le numero de facture mais comme elle est pas transmise en post comme le montant mais inseré directement depuis cette page je voix pas comment je dois faire.


 
Bon, ok. Je commente un peu ton code :

Citation :

 

Code :
  1. session_start();
  2. if(isset($_POST['montant']))
  3. {
  4. $_SESSION['paiement_num_facture'] = $_GET['paiement_num_facture']; //cette ligne n'a pas de sens, tu n'as rien dans $_GET
  5. $_SESSION['montant'] = $_POST['montant'];
  6. }
  7. [...]
  8. $lignes_factures = mysql_fetch_assoc($factures);
  9. $num_facture=$lignes_factures['paiement_num_facture']+1;
  10. //ici tu connais num_facture, tu peux le mettre en session
  11. //$_SESSION['paiement_num_facture'] = $num_facture
  12. [...]
  13. //seconde solution, plutot que le mettre en session tu le mets dans GET...je corrige la ligne
  14. header("Location:../accueil.php?erreur=envoye&paiement_num_facture=$num_facture" );
  15. // redirection vers la page formulaire



 
Là tu devrais mieux voir...si je me suis pas planté en cours de route!;)
Mais tu as de fortes lacunes dans la compréhension du passage de paramètres, tu devrais lire de la doc et des tutos...


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

Marsh Posté le 16-03-2005 à 14:35:48    

Je vais suivre tes conseilles merci. Pourtant je lis pas mal de doc. J'essaye aussi de pratiquer à coté mais c'est pas encore ça. Enfin je m'y suis mis il y a 2 semaines. Donc j'avance lentement mais surement

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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