COURS PHP

  Dernière mise à jour effectuée le : Mardi 26 août 2003    

Accueil | Passage de variables d'une page à l'autre

Passage de variables d'une page à l'autre

Pré-requis :

 
C'est une des principales commodité de PHP. Nous allons y passer un grand moment.



Principe

Comme pour tout, le principe en est très simple. Vous savez déjà que PHP est un langage "côté serveur". C'est à dire qu'il ne se passe rien sur le poste du client, et que tout se passe sur le serveur. Hé bien, pour passer des variables (leurs valeurs) d'une page à l'autre, il faut simplement positionner correctement ces variables dans la page appelante et appeler la page qui devra les exploiter. PHP est tellement bien fait qu'il a prévu plein de trucs pour pouvoir faire ça. Soit à l'aide d'un formulaire, soit en mettant les couple "Variable=valeur" au bout de l'URL (adresse de la page appelée) en appelant la page à laquelle on veut passer les valeurs désirées.
On peut aussi utiliser les cookies (non, ça ne se mange pas...) ou écrire les valeurs à passer dans un fichier ou dans une base de données. Bref, ce ne sont pas les moyens qui manquent.

 



Par un formulaire

Là, il faut se souvenir de HTML. On va en avoir beaucoup besoin. Souvenez-vous : si on le lui demande, PHP génère du code HTML qu'il envoie à l'utilisateur. Mais il ne le génére pas par magie. Non ! Et heureusement, autrement où irions nous. Il va falloir que nous le programmions.
Alors. Pour en revenir à notre formulaire, vous avez sans doute remarqué que les tags (balises) HTML qui génèrent un formulaire sont de plusieurs sortes.
La première, c'est le formulaire lui même. Je rappelle (pour mémoire) la forme qu'il a :
<form name="Formulaire" method="POST" action="UnePage.php">
Vous savez aussi que :
name, method, action
s'appellent les "attributs" des tags. Ici, celui qui va nous intéresser au plus haut point, c'est l'attribut "method". Selon qu'elle soit "POST" ou "GET", les valeurs des variables seront passées à la page appelée différemment.

Ensuite, dans les objets du formulaire, nous avons :
champ de texte :
<input type="text" name="NomPrenom">
et toutes ses déclinaisons.
case à cocher :
<input type="checkbox" name="Catalogue" value="Un Catalogue ">
bouton radio :
<input type="radio" name="Age" value="de 20 à 30 ans">
liste, et liste menu,
<select name="Annee" size="1">
<option selected value="2003">2003</option>
<option value="2004">2004</option>
<option value="2005">2005</option>
<option value="2006">2006</option>
</select>

Vous avez remarqué que chaque tag qui génère ces objets possède un attribut "name". Vous avez certainement remarqué vu que je vous les ai mis en rouge pour attirer votre attention. Faudrait le faire exprès pour les rater non ? Hé bien c'est cet attribut "name" ou surtout sa valeur (celle que nous lui donnerons) qui va devenir la variable passée à la page appelée.

En rencontrant cet attribut, PHP va créer une variable spéciale qu'il va stocker quelque part (nous verrons où selon la "method" utilisée), et le contenu de cette variable sera récupérable par la page appelée (nous verrons comment).
Anciennement, il suffisait d'ajouter simplement un "$" devant le nom que nous avons nous même donné à cet attribut "name" dans chaque tag.
Ainsi, si dans la page appelante nous avions créé:
<input type="text" name="NomPrenom">
et que l'utilisateur rentre "Philippe Médan" dans le champ, la page appelée récupérait (anciennement) cette valeur dans la variable $NomPrenom.
Vous voyez que ça n'était pas très compliqué. Ca marche encore sur certains serveurs, mais je préconise de surfer sur le haut de la vague, et d'utiliser les nouvelles normes (décrites plus bas) pour être toujours à jour.

ATTENTION : de nouvelles normes définies par PHP exigent maintenant, pour des raisons de sécurité (ne pas écraser les variables natives par inadvertance), que les variables passées soient récupérées en accédant au tableau associatif dans lequel elles sont stockées et non plus seulement en mettant un "$" devant le nom de l'objet de formulaire. Ce que vous venez de lire fonctionne encore, mais mieux vaut se mettre tout de suite à la page. Nous verrons ça plus bas.

Mais... (il y a toujours un "mais"), selon l'objet de formulaire et la "method" utilisée, il y aura de grandes différences. Nous allons les étudier une par une.

 



Method = POST

Avec cette méthode, les saisie utilisateur et les valeurs que nous aurons nous même données aux objets de formulaire, seront stockées et passées à la page (ou le script) appelé dans une variable appelée $_POST, anciennement $HTTP_POST_VARS. C'est une variable qui est en fait un tableau associatif dans lequel chaque poste aura pour clé le nom que nous avons donné à l'objet de formulaire.
Nous pourrons accéder au contenus de ces postes par l'instruction (dans la page appelée) :

$MaVariable = $_POST[NomDeLobjetDeFormulaire] ;

Nous verrons dans les leçons correspondantes, comment ça se passe suivant le type des objets de formulaires.

 



Method = GET

Avec cette méthode, les saisie utilisateur et les valeurs que nous aurons nous même données aux objets de formulaire, seront stockées et passées à la page (ou le script) appelé dans une variable appelée $_GET, anciennement $HTTP_GET_VARS. C'est une variable qui est en fait un tableau associatif dans lequel chaque poste aura pour clé le nom que nous avons donné à l'objet de formulaire.
Nous pourrons accéder au contenus de ces postes par l'instruction (dans la page appelée) :

$MaVariable = $_GET[NomDeLobjetDeFormulaire] ;

Vous voyez que ça se passe comme avec POST. Mais en plus, les couples "name=value" de chaque objet du formulaire seront ajoutés au bout de l'URL (adresse de la page appelée), introduits par un signe "?" et chaque couple séparés par le signe "&".

Nous verrons dans les leçons correspondantes, comment ça se passe suivant le type des objets de formulaires.

 



Ce cours est enseigné par Philippe Médan 
dans le cadre de la formation des professionnels de l'INTERNET.
au CREFAC , 14 rue Scandicci, 93000 Pantin. Tél. : 01 48 46 51 99
au GITA-GRETA , Lycée Technologique Diderot 61, rue David D'Angers 75019 Paris Tél. : 01 40 40 36 27
au CESI à l'Ecole des ingénieurs, 116 Av Aristide Briand, BP 57, 92224 Bagneux CEDEX Tél. : 01 45 36 70 00

© Philippe Médan 1999-2003. Tous droits de reproduction réservés pour tous pays.