coincoins

Le cycle d'affichage en PHP

Afficher une page, c'est bien, mais récupérer des paramètres pour rendre l'affichage encore plus dynamique, c'est mieux.
Nous verrons les méthodes de base et un apperçu de l'architecture MVC

Principe de base du cycle d'affichage des pages (rappel?)
L'enchâinement des pages et des calculs qui découlent des choix et données des formulaires est inversé en PHP.

1. Programmation classique

En programmation classique, on valide un formulaire puis on fait les calculs nécessaires qui en découlent.

Exemple en algo : afficher la table de multiplication de n termes d'un nombre.

DEBUT
	// Affichage du formulaire
	nbre= saisir 'Donner le nombre entier'
	n= saisir 'Donner un nombre de termes à calculer'
 
	// exécution du calcul, affichage résultat
	pour i de 1 à n par pas de 1
	   Afficher nbre+"*"+i+"="+(nbre*i)+RETOUR_LIGNE
FIN

 

2. Programmation événementielle

Comme en programmation classique, on a un affichage au centre du programme et des événements (click, saisie, etc...) appellent des micro-programmes qui vont piloter le rafraichissement et changement des affichages.

Exemple en VBA MS-Access :

 

3. Programmation PHP

En PHP, on a trois phases bien distinctes :

  1. la récupération et le contrôle des paramètres,
  2. l'exécution des traitements en fonction des paramètres,
  3. la production de l'affichage résultant

Chaque page php est un script autonome dont la finalité est l'envoie d'une image écran au navigateur du client

Exemple en php :

<?php
/* -----------
 * Le formulaire est dans la page HTML appelante.
 * il présente trois contrôles (champs) :
 * - input type=text name=nbre   : Base de la table,
 * - input type=text name=n      : nombre de termes à calculer
 * - input type=submit name=btn0 : bouton de soumission du formulaire.
 * ----------- */
// récupération et initiatlisation des valeurs
	nbre= $_GET['nbre'];
	n   = $_GET['n'];
	$resultat="";
 
	// exécution du calcul, affichage résultat
	for ($i = 1 ;$i<n ;$i++)
	  echo "<br>".$nbre."*".$i." = ".(nbre*i);
?>
Passer des paramètres entre les pages

En programmation Oldies, une application web basique est un jeu de piste entre des pages sucessives. Nous utiliserons ce principe dans ce chapitre.

1. Lea tableaux passés par un formulaire

Ces tableaux sont au nombre de TROIS :

  • $_GET : tableau des paramètres transmis par la méthode GET du formulaire,
  • $_POST : tableau des paramètres transmis par la méthode POST du formulaire,
  • $_REQUEST : tableau qui regroupe les paramètres transmis avec GET et avec POST.

Vous aurez vite compris qu'on va utiliser le dernier ...

 

Note : en "production", on utilisera POST, pour masquer les paramètres et ainsi augmenter la sécurité !

Un petit formulaire ...
Exemple de focmulaire vite fait
Nom ?

Veuillez donner votre nom, c'est juste un test.

Voici un petit forluaire vite fait en encart, il est enregistré dans un fichier ... euh ... formulaire.html ? Ouais, on va dire ça!

Et, ci-dessous, le code correspondant (noter la propriété : method="GET" dans la balise from)

<!-- début du formulaire -->
<form method="GET" action="traitement.php"> 
	<!-- un champ quelconque -->
	Votre nom ? <input type=text name=nom placeholder="juste pour voir" required /> 
	<!-- le bouton de validation du formulaire -->
	<br><input type="submit" name="btnGO" value="Valider la saisie" /> 
</form >
<!-- /fin du formulaire -->
... et le fichier de traitement en PHP
Contenu du fichier traitement.php qui (hm) traite les données traismises par formulaire.html.

Code de la page de traitement des données produites par le formulaire html.

<?php
// 1) réupérer les paramètres envoyés par le formulaire
if (isset($_REQUEST['nom'])) 
	$nom=$_REQUEST['nom'];
else 
	$nom="";
 
// 2) Traiter les paramètres et construire le résultat
if ($nom!="") 
	$message="Votre nom est $nom";
else 
	$message="Veuillez donner votre nom, c'est juste un test.";
 
// 3) afficher le résultat (on retourne au html)
?>
<?php
<h3>Resultat du test</h3>
<br><?= $message; ?>
<br>Merci de votre réponse
 

On a nos trois étapes clairement définies (c'est plus facile à maintenir).

remarquer :

La fonction isset (ou empty) qui permet de vérifier que le paramètre existe bien (et n'est pas vide) lors de l'initialisation de $nom,

Le signe != qui symbolise le test de différence (non égal)

Le changement de type de rédaction du code entre les deux 1ères parties (php) et l'affichage (html) où on a majoritairement du html.