Accueil > Développement web > Les pages dynamiques avec PHP/MySQL > III) Requête HTML et traitement PHP
866 visites

III) Requête HTML et traitement PHP

samedi 31 mars 2012 (), par Vader[FR]

Pour qu’un script php puisse générer une page différente en fonction des besoins de l’utilisateur, il faut lui fournir des paramètres et leurs valeurs.

Il existe pour cela 2 méthodes :

  • la méthode GET, qui envoie les paramètres dans l’url. Cela a 2 inconvénients : la taille (limite de 256 caractères pour l’url) et la sécurité (affichage en clair des informations transmises)
  • la méthode POST, qui envoie les paramètres d’une manière transparente.

Pour la première requête, il n’y a pas d’autre moyen, mais par la suite on pourra utiliser des variables de session (en cookie ou non).
Cela sera détaillé dans un autre article.

Méthode GET

Envoi par méthode GET

Cette méthode est plutôt réservée aux liens, mais peut servir aux formulaires, si les données à transmettre ne sont pas trop grandes.

Cela consiste à envoyer les paramètres et leurs valeurs dans l’url, selon la norme suivante :

  • on signale l’envoi de paramètres par un ? après l’adresse du script.
  • les paramètres/valeurs sont séparés par des &
  • les espaces sont remplacés par des +
  • les paramètres sont séparés de leur valeur par =

Dans un lien, cela donne par exemple :
http://graindimage.org/charger_diapo.php?id=0&delai=0

Ici, les données contenues dans la réponse sont ensuite utilisées par un script JavaScript pour le diaporama de la page de garde.

On peut par ailleurs voir les requêtes et leur réponse dans l’onglet réseau de Firebug des outils de développement web :

Firebug - requêtes

Cela peut permettre d’avoir des informations complémentaires en cas de besoin.

Dans un formulaire, la requête sera créée lors du clic sur le bouton/image/lien de validation.
On procède alors comme ceci :
<form method="GET" action="adresse_script.php"> déclaration du formulaire - quel script récupère les informations, et comment on les envoie. L’adresse du script sera de préférence relative, depuis celle de la page en cours.

une fois le formulaire déclaré, il faut y mettre des champs :
<input type="text" name="nom_parametre"> un champ chaîne de caractères. Ont peut préciser entre autres les attributs size (taille de la zone de saisie) et maxlength (taille maximale du texte que l’on peut saisir).
ce qui donne
<input type="password" name="nom_parametre"> un champ chaîne de caractères cachés, par exemple pour un mot de passe. Celui-ci étant affiché en clair en mode GET, il est préférable de ne l’utiliser qu’en POST
exemple
<input type="hidden" name="nom_parametre"> un champ caché. l’utilisateur ne saisira aucune information, celle-ci pouvant être inscrite en dur dans le formulaire, ou récupérée par une variable de session ou une saisie précédente.
<textarea name="nom_parametre"></textarea> pour une zone de texte. on peut entre autres préciser cols et rows pour le nombre de colonnes (nombre de caractères dans une ligne) et de lignes.
exemple :

Il existe aussi d’autres types de champ, notamment pour l’envoi de fichiers. Le traitement de ceux-ci étant très particulier, il ne sera pas abordé ici.

Il va de soi que les noms des champs devront être différents.

Pour valider le formulaire, il y a 2 champs spéciaux possibles :

<input type="submit" value="ce_qui_est_ecrit_sur_le_bouton"> un bouton
<input type="image" src="chemin_vers_fichier_image"> une image

il existe aussi un champ spécial pour remise à zéro du formulaire. Le sujet de cet article étant le PHP et non l’HTML, il ne sera pas abordé ici.

</form> et on n’oublie pas de fermer le formulaire.

Méthode POST

Envoi par méthode POST

Cette méthode est plutôt réservée aux formulaires, mais peut servir aux liens, moyennant un petit bricolage qu’il faut tout de même éviter.

On procède pratiquement pareil que pour le GET :
<form method="POST" action="adresse_script.php"> déclaration du formulaire - ici, on indique non plus la méthode GET mais POST

les champs sont les mêmes que ceux décrits précédemment.

ici, si l’on souhaite afficher un lien au lieu d’un bouton, l’astuce est de passer par un "bouton image" sans image source.
C’est alors le texte alternatif qui sera affiché. Le problème est que sous IE, la petite croix rouge de "image absente" sera quand même affichée.

<input type="image" src="" alt="texte_a_afficher">

Cela peut servir pour, par exemple, un tri par clic sur l’entête de la colonne d’un tableau, l’ordre de tri, le début et les filtres passant en champs cachés.

</form> et on n’oublie pas de fermer le formulaire.

Les attributs HTML étant assez variés pour les différentes balises décrites dans cet article, seuls les plus courants ont été décrits.
Le sujet de cet article est le PHP, et non l’HTML.

Traitement des paramètres

Récupération et traitement des paramètres en PHP

Que ce soit GET ou POST, les instructions de récupération des paramètres seront mises de préférence au début du script.

Le code PHP est toujours entre deux balises <?php et ?>.
Chaque instruction PHP doit se finir par un point-virgule ;
Il est préférable d’indenter le code pour qu’il soit plus lisible.
Des éditeurs comme gedit (sous Linux) ou Notepad++ (sous Windows) sont capables de reconnaître la syntaxe et de colorier le texte en conséquence. Cela permet de mieux suivre le code, et notamment repérer les " ;" manquants.
Les commentaires sont indiqués par // commentaire sur une ligne ou /* commentaires sur plusieurs lignes */

if (isset($_GET["id"])){ Il est plus propre de tester auparavant si le paramètre existe, en clair, s’il est défini (is set)
        $idd=$_GET["id"]; Si oui, on le récupère par la commande $_GET["nom_paramètre"] ;
}else{ Il est préférable aussi de prévoir une valeur "par défaut", au cas où. De même on aurait pu prévoir une vérification de la valeur du paramètre. De fait, il est plus simple de mettre cela plus loin dans le script.
        $idd=0; la valeur par défaut
}

Pour des variables en POST, le $_GET devient $_POST :

if (isset($_POST["id"])){
	$idd=$_POST["id"];
}else{
	$idd=0;
}

On peut même imbriquer les deux méthodes, en essayant par exemple GET puis POST :

if (isset($_GET["id"])){
	$idd=$_GET["id"];
}else{
      if (isset($_POST["id"])){
	   $idd=$_POST["id"];
       }else{
	   $idd=0;
      }
}

Pour le traitement des valeurs récupérées et les fonctions/structures de PHP, voir les articles suivants...

Répondre à cet article

Total 436889 visites depuis 4633 jours | | SPIP | | Plan du site | Suivre la vie du site RSS 2.0