PHP - MySQL [Retour au menu]
Les formulaires et les envois de paramètres

Création et envoi sur une autre page PHP, récupération du contenu des champs ou de variables, utilisation de urlencode et urldecode

Toute une section concernant la construction de formulaires (en interaction avec JavaScript) se trouve ici.

IMPORTANT : Pour permettre le passage de variables issues d'un formulaire vers une autre page PHP, il est indispensable d'éditer le fichier php.ini, qui se trouve dans le dossier Windows, et de mettre
register_globals = on

Formulaires : Exemple simple

Cet exemple nécessite 2 pages : La première contient un formulaire basique, avec un seul champ de siaise et un bouton SUBMIT, qui renvoie à une autre page qui va récupérer les données du formulaire.

Page de départ : depart.htm

<body>
  <form method="post" action="arrivee.php">
    <input type="text" name="EDInom">
    <input type="submit" name="Submit" value="Envoyer">
  </form>

</body>

Page d'arrivée : arrivee.php

<body>
  Votre nom est
  <? echo $EDInom; ?>
</body>

Passage de paramètres d'une page (HTML ou PHP) à une page PHP

Page d'appel :

Dans la page d'appel, il n'est pas nécessaire de mettre du code PHP :

<body>
  <a href="suite.php?Fruit=Citron">voyons la suite</a>
</body>

On constate le passage du paramètre Fruit qui va contenir Citron.

Page appelée :

La page appelée est en PHP, parce qu'il faut extraire le Citron de Fruit :

<body>
  Fruit vaut :
  <? echo $Fruit ?>
</body>

Passage de plusieurs paramètres d'une page à l'autre

Page d'appel

<body>
  <a href="suite.php?Fruit=Citron&Voiture=Mercedes 500 SL&GrandChiffre=17000.04">suite</a>
</body>

Page appelée

<body>
  Fruit vaut :        <? echo $Fruit            ?> <BR>
  Voiture vaut :      <? echo $Voiture          ?> <BR>
  GrandChiffre vaut : <? echo $GrandChiffre * 2 ?> <BR>
</body>

Lecture automatique de tous les paramètres

Une petite astuce bien pratique pour afficher systématiquement toutes les variables passées en paramètre :

@reset ($HTTP_GET_VARS);
  while (list ($key, $val) = @each ($HTTP_GET_VARS))
    {
    print "$key vaut $val<br>";
    }

Donne :

Fruit vaut Citron
Voiture vaut Mercedes 500 SL
GrandChiffre vaut 17000.04

Problèmes de caractères spéciaux

Lorsqu'on passe des paramètres sous forme de chaînes de caractères d'une page à l'autre, il est très possible de se retrouver parfois avec des phrases de type :

C'est ça la vie d'<artiste> : être 100% en forme & présent !!!

C'est à dire bourrée de caractères spéciaux qui ne vont pas se passer correctement. Heureusement, il existe 2 fonctions corrélées : urlencorde et urldecode (Codage et décodage d'URL). Exemple :

<?
  $x = urlencode("C'est ça la vie d'artiste : être 100% en forme & présent !!!");
  echo $x;
  $y = urldecode($x);
  echo $y;
?>

Affichage de X :

%27est+%E7a+la+vie+d%27artiste+%3A+%EAtre+100%25+en+forme+%26+pr%E9sent+%21%21%21

Affichage de Y, re décodé :

C'est ça la vie d'artiste : être 100% en forme & présent !!!

Attention : J'ai constaté des problèmes avec les guillemets (mais ça c'est normal, on ne peut pas tellement facilement mettre des guillemets entre guillemets), mais, plus grave, les signes < et > posent des problèmes : Le urldecode s'embrouille les pinceaux.

-