04-07-2008 : 1h59 min - non connecté
Dernière modification le 12 août 2007

 

Passer des variables d'une page à l'autre

 

Voici une partie importante de PHP. Des variables ont une valeur dans une page donnée, mais comment les récupérer dans une autre page ? Nous allons utiliser ce que l'on appelle la méthode GET. Cette méthode consiste à ajouter les variables en question dans l'url de votre page. Vous avez surement déjà vu des sites avec des adresses à rallonge du genre www.monbeausite.com/mapage.php?variable1=2&variable2=12.

Le point d'interrogation après le nom de la page signifie que je vais rajouter des variables dans l'url. Ensuite chaque variable est séparée par un &.

Créer le lien dans la première page

Reprenons l'exemple de la page précédente sur la multiplication de deux nombres. Supposons qu'on veuille soustraire les deux mêmes nombres, mais dans une autre page appelée "soustraire.php". Pour cela, je crée un lien dans la première page (qu'on avait appelé "Premiers pas") avec le code suivant :

Remarquez qu'on mélange le code html et le code PHP. La partie HTML permet de créer le lien et la partie PHP permet de donner des valeurs aux variables. La commande <? echo $a ?> affiche la valeur de la variable $a. On obtiendra bien le lien voulu avec des chiffres à la place des codes php : <a href="soustraire.php?nb1=3&nb2=6"si $a vaut 3 et $b vaut 6.

Lorsqu'on n'est pas trop à l'aise avec le PHP, on commence par créer le lien en html avec un éditeur classique. Puis on rajoute dans le code source, le code PHP. Ce qui donne, étape par étape :

Le code ci-dessus est obtenu en créant un lien avec les boîtes de dialogue classiques de votre éditeur. Inutile d'écrire le code source à la main.

Ensuite on va dans le code source et on rajoute <? echo $a ?> et <? echo $b ?> aux bons endroits :

puis :

Exercice :

Rajouter dans la page "Premier pas" un lien vers la page soustraire.php. La page soustraire.php sera créée dans l'exercice suivant.

Récupérer les variables dans la deuxième page

Les variables qui transitent par l'url sont stockées dans une variable particulière de PHP de type tableau, appelée $_GET. Attention, il est important d'écrire cette variable en majuscules. Je peux alors récupérer la variable nb1 en écrivant $_GET['nb1'] et la variable nb2 par $_GET['nb2']. Si je veux faire ma soustraction, cela donnera :

On aurait aussi pu écrire le code sur plusieurs lignes en affectant d'abord les valeurs de $_GET à des variables. Cela rend le code plus compréhensible et évite d'avoir à écrire plusieurs fois $_GET['nb1'], ce qui est un peu fastidieux, vu les crochets et les apostrophes :

Exercice :

1) Créer la page soustraire.php.

2) Modifier les valeurs des variables directement dans l'url, dans la fenêtre du navigateur et constater ce qui se passe dans la page soustraire.php.

Eviter les messages d'erreurs quand la variable n'est pas définie

Avec les versions récentes de PHP, la sécurité a été renforcée. On ne peut plus créer de variable qui ne soit pas définie sans qu'il y ait un message d'erreur. La ligne $var1=$_GET['nb1'] générera une erreur si la variable $_GET n'existe pas (c'est le cas si vous lancez soustraire.php sans paramètres). Il y a deux façons de remédier à ceci :

  • Modifier le paramétrage de easyphp pour désactiver ces erreurs. Ce serait une mauvaise idée car les scripts seraient moins sécurisés. Je n'expliquerai donc pas comment faire (cherchez du côté de "register global" ...)
  • Affecter correctement les variables. Voyons comment faire dans le paragraphe suivant.

Pour qu'il n'y ait pas d'erreurs, il faut que $var1 prenne la valeur $_GET['nb1'] lorsque $_GET existe et qu'elle prenne une autre valeur sinon (par exemple la valeur "vide" ou un message d'erreur, ou ...). Pour affecter le "vide" à une variable, j'écris : $var1=""; (deux apostrophes sans espace). Voici comment faire en une ligne :

Ce qui signifie : si la variable $_GET['nb1'] existe je donne la valeur $_GET['nb1'] à $var1, sinon je lui donne la valeur "vide". On met avant le point d'interrogation le critère de test, après le point d'interrogation la valeur si le test est vrai et après le double point la valeur si le test est faux.

Cours suivant : Le traitement des formulaires