Portée d'une variable d'un forrmulaire via une autre page - Apprendre-PHP.com

Rechercher
Boutique en ligne, solution e-commerce, script PHP et PERL : RAYNETTE

Portée d'une variable d'un forrmulaire via une autre page

Par mctarek -  2 reponses -  Le 19/09/2010 -  Flux RSS - 

Sur le chapitre 9. Exemple d'illustration de la portée des variables dans une fonction.

L'exemple fourni est fonctionnel. J'essaye de transposer l'exemple sur 2 pages: Page1 avec un formulaire et Page2 pour la gestion du calcul (fonction) + affichage du résultat.

Le résultat me retourne toujours une page blanche ou Undefined variable: volume in c:\program files\easyphp1-8\www\exercices\bugdetessence2.php on line 31

voici le code de la page 1 (bugdetessence.php)

// <html> <head><title>Calculer votre bugdet essence</title></head> <body> <form method="post" action="bugdetessence2.php"> <table width="300" border="1"> <tr> <td width="100"><b>Budget Essence</b></td> <td width="200"><input text="text" name="budgetEssence" size="3"></td> </tr> <tr> <td width="100"><b>Volume Essence</b></td> <td width="200"><input text="text" name="volume" size="2"></td> </tr> <tr> <td width="100"><b>Prix Essence</b></td> <td width="200"><input text="text" name="prixAuLitre" size="2"></td> </tr> <td width="100">&nbsp;</td> <td width="200"><input type="submit" value="Envoyer" name="submit"></td> </tr> </table> </form> </body> </html> //

 

voici le code de la page 2 (bugdetessence2.php) et c'est la panique car je  ne sais pas si je dois déclarer les variables de la page1 vers cette page  ou non. Bref, la fonction passe inaperçue et les variables  $volume, $prixAuLitre sont inconnus (du formulaire).

// <html> <head><title>calcul bugdet essence</title></head> <body> <?php // Déclaration de la fonction function remplirReservoir(&$volume, &$prixAuLitre) { // Déclaration des variables global $budgetEssence; static $volumeTotalEssence; // $montant = 0; // Calcul du prix du remplissage de l'essence $montant = round($volume * $prixAuLitre, 2); // Retrait de $montant à $budgetEssence $budgetEssence -= $montant; // Ajout du volume au volume total enregistré $volumeTotalEssence += $volume; // Affichage des informations echo 'Vous avez mis ', $volume ,'L d\'essence.'; echo 'Prix au Litre : ', $prixAuLitre ,' euros.</br>'; echo 'Prix total : ', $montant ,' euros.'; echo 'Budget essence restant : ', $budgetEssence ,' euros.'; echo 'Volume total d\'essence depuis le début : ', $volumeTotalEssence ,'L.'; } echo 'info1. Vous avez mis ', $volume ,'L d\'essence.'; echo 'info2. Prix au Litre : ', $prixAuLitre ,' euros.</br>'; ?> </body> </html> //

Merci de votre correction.

Tarek

 

Réponses apportées à cette discussion

Par Cyrano -  Le 20/09/2010 - 

Salut,

là, il y a pas mal à dire parce que tu pars en partie de principes de base obsolètes et  d'un code en seconde page deux faux.

Le principe obsolète, c'est la manière dont tu récupères les valeurs du formulaire : pour que ça fonctionne, il faudrait au moins que la directive register_globals de ton php.ini soit à ON : par défaut, cette directive est à OFF depuis la version 4.2 de PHP. Il est aussi important de savoir qu'à partir de la version 6 (si toutefois elle voit le jour), cette directive disparaitra, sera à OFF par défaut et non modifiable. Pourquoi demanderas-tu peut-être : parce que ça ouvre une faille de sécurité potentielle importante.

Donc, pour récupérer les valeurs de ton formulaire, il faut les rechercher dans la super-globale appropriée selon la méthode utilisée pour le formulaire, get ou post et donc dans $_POST ou dans $_GET.

La seconde page de ton exemple ne doit pas donner grand chose. D'abord et avant tout parce que la fonction ne sert strictement jamais, elle n'est jamais appelée. Ensuite cette fonction utilise un passage des valeurs par référence, technique obsolète en PHP5. N'oublions pas que le support de PHP5 est arrêté depuis plus d'un an maintenant.

Le conseil du jour : analyse ce que tu veux faire globalement, mets au point l'affichage de sortie que tu veux voir, s'il doit y avoir des traitements, crée les fonctions appropriée et enfin seulement intègre ça dans une page. Par rapport à ce cheminement, il semble que tu aies un peu court-circuité les deux premières étapes et que tu sois parti sur la troisième directement enmettant au point les deux premières au fur et à mesure.

Enfin, pour ce qui est de la portée des variable : ça signifie quoi selon toi ? Essaye de m'expliquer ce que tu comprend ce cette formulation, ça nous donnera un point de départ pour te remettre sur les rails :)

 

 
Par mctarek -  Le 20/09/2010 - 

Salut. Le problème est que je ne savais pas comment récupérer les variables du formulaire vers la page 2. Je sais comment faire maintenant. J'ai supprimé la fonction. Le résultat est sur cette page. Je ne garantis en rien la sécurité du code: http://mctarek2.free.fr/exos/bugdetessence.php Merci de votre réponse.

Tarek

 

 

Ajouter une réponse à la discussion

Seuls les membres loggués sont autorisés à poster dans les forums !