passer un paramètre à une autre page

TAB
Petit nouveau ! | 7 Messages

23 août 2009, 04:53

YGlob.php:
<html><head><title>TstGlobal</title></head><body>
 <?PHP $a = "Bonjour "; $GLOBALS["foo"]="Salut" ?>
 <a href="YGlobb.php"><p>Cliquer</p></a>
 </body></html>
YGlobb.php:
<html><head><title>TstGlobal</title></head><body>
 <?PHP $b='Blah!'; echo "a=", $a, 'b=', $b, '$GLOBALS[foo]=', $GLOBALS["foo"] ?>
 </body></html>
YGlob est censé assigner 2 variables globales: $a, et $GLOBALS["foo"].
YGlob affiche 'Cliquer'
Si je clique, j'obtiens YGlobb, qui affiche: a=b=Blah!$GLOBALS[foo]= ; les valeurs globales se sont perdues en chemin... Pourquoi?
Je n'aime pas particulièrement les variables globales; y-a-t-il un moyen élégant de passer un paramètre (par exemple, un 'array index') d'une page(YGlob) à une autre (YGlobb)?

Mammouth du PHP | 2937 Messages

23 août 2009, 07:11

Pour passer un paramètre à une autre page, soit tu utilises paramètre envoyé en GET (via l'URL) ou en POST (via un formulaire, par exemple) soit tu crées une variable de session ; ou bien, autre solution plus facile, tu crées un troisième fichier PHP où tu déclares ta variable $GLOBALS, fichier que tu inclus dans tes deux pages (via include () ou require ()).

Eléphant du PHP | 224 Messages

23 août 2009, 11:45

Bonjour :)
... autre solution plus facile, tu crées un troisième fichier PHP où tu déclares ta variable $GLOBALS, fichier que tu inclus dans tes deux pages (via include () ou require ()).
Euh... :? pas très bien compris cette dernière technique, peux-tu donner un petit exemple Stp ? :priere:

Merci :)
Fredo d;o)
"Un pas à la fois me suffit..." (Gandhi)

Mammouth du PHP | 2937 Messages

23 août 2009, 13:51

Euh... :? pas très bien compris cette dernière technique, peux-tu donner un petit exemple Stp ? :priere:
C'est pourtant simple :

inclusion.php
<?php
$GLOBALS['foo'] = 'Salut';
$a = 'Bonjour';
?>
YGlob.php
<?php include ('inclusion.php'); ?>
<html><head><title>TstGlobal</title></head><body>
<a href="YGlobb.php"><p>Cliquer</p></a>
</body></html>
YGlobb.php
<?php include ('inclusion.php'); ?>
<html><head><title>TstGlobal</title></head><body>
<?php
$b = 'Blah!';
echo 'a='.$a.' b='.$b.' $GLOBALS[\'foo\']='.$GLOBALS['foo'];
?>
</body></html>

Eléphant du PHP | 224 Messages

23 août 2009, 14:50

... peux-tu donner un petit exemple Stp ? :priere:
C'est pourtant simple : ...
Ha oui, d'accord, c'est comme pour une simple variable, j'avias pensé à autre chose lorsque tu as parlé de l'utilisation de $GLOBALS...

J'ai cru que tu évoqués la possibilité de déclarer une $GLOBALS dans un fichier et de changer sa valeur à partir de n'importe quel autre fichier, tout en retrouvant ces nouvelles valeurs par simple inclusion sur tous les fichiers... bref, j'ai mal interprété ta réponse (j'a cru un instant à un truc un peu spécial ;))...

Merci :)
Fredo d;o)
"Un pas à la fois me suffit..." (Gandhi)

TAB
Petit nouveau ! | 7 Messages

28 août 2009, 06:30

Pour passer un paramètre à une autre page, [...] tu crées un troisième fichier PHP où tu déclares ta variable $GLOBALS, fichier que tu inclus dans tes deux pages (via include () ou require ()).
Merci! ça marche... sauf quand je complique un peu les choses:

YGloCom.php:
<?PHP $a = "Hello "; $GLOBALS["x"]; $x='Quoi?'?>
YGlobb.php:
<html><head><title>TstGlobal</title></head><body>
 <?PHP include_once 'YGloCom.php';//common
 $b='Blah!'; echo "a=", $a, 'b=', $b, '$GLOBALS[x]=', $GLOBALS["x"], 'x=', $x ?>
 </body></html>
YGlob.php:
<html><head><title>TstGlobal</title></head><body>
 <?PHP include_once 'YGloCom.php' ?>
 <?php $x="Oui!"?><a href="YGlobb.php"><p>ClickYes</p></a>
 <?php $x="Non!"?><a href="YGlobb.php"><p>ClickNo</p></a>
 </body></html>
Si je lance YGlob et que je clique 'ClickYes', Yglobb affiche
a=Hello b=Blah!$GLOBALS[x]=Quoi?x=Quoi?
Mais je voulais x='Oui!' au lieu de 'Quoi?'
Autrement dit: comment ajuster x selon ce que l'usager clique?
Modifié en dernier par TAB le 29 août 2009, 02:44, modifié 1 fois.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

28 août 2009, 08:33

Modération :
Afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.

Des indications sont disponibles sur la manière de mettre en forme vos messages dans la FAQ
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer