Accueil

Traduction

Débuter en programmation web - sommaire

Débuter en programmation web - recherche

L'auteur : Patrick Darcheville

Vous pouvez me contacter via Facebook pour questions & suggestions : Page Facebook relative à mon site

Les structures de contrôle en PHP

Dans ce chapitre nous abordons les conditions et les boucles.
Si vous connaissez JavaScript vous constaterez que les structures de contrôle PHP sont très proches de celles de Javascript.

Les conditions

Les opérateurs de comparaison

Attention pour tester l'égalité il faut écrire == et pour tester la différence il faut écrire !=.

Les opérateurs logiques

La structure if

Le code de l'exemple (partie BODY) :

J'en profite pour introduire une fonction PHP très utile : rand().
Ici l'instruction génère un entier aléatoire compris entre 1 et 20 et l'affecte à la variable $note.

Dans une condition if le bloc d'instructions entre accolades est exécuté si la condition est VRAIE.

Le rendu :

Actualisez la page pour générer de nouveau un entier de façon aléatoire !

La structure if ... else...

Reprenons le thème précédent. Plutôt que deux conditions if simples on peut utiliser une seule condition if ... else ...

Le code de la partie BODY avec if ... else ... :

Le rendu :

Les if imbriqués

La note va être saisie via un formulaire et il y a désormais quatre appréciations possibles (et non pas plus deux).

Il y a une grosse erreur dans le code HTML mais ... une erreur volontaire.
Les contrôles de saisie HTML5 (attributs required et pattern de la balise input) sont ici inopérants !!! Pour l'explication voir le chapitre précédant : "les fonctions PHP".
Donc je suis obligé de faire le contôle de saisie en PHP avec une condition complexe : ensemble de plusieurs conditions simples reliées par des opérateurs logiques.

La fonction PHP is_numeric(variable) retourne VRAI si la variable contient un nombre.
Donc!is_numeric($note) (lire NOT is_numeric) retourne VRAI si le contenu n'est pas un nombre.

Le rendu :

Lors de l'affichage de la page un message d'erreur peut apparaître :Undefined index : note in ...
Pas de panique ! C'est logique. Il n'y a pas encore eu de soumission donc le tableau $_POST n'existe pas encore.
Il aurait fallu rajouter un test basé sur la fonction isset() !

Alternative : structure switch

La structure switch existe en JavaScript ; elle existe aussi en PHP et avec la même restriction : le seul opérateur de comparaison admis est égal.

Donc le thème précédent ne peut être traité avec un switch !

Le nouveau thème est : affichage du nom de département en fonction du code minéralogique saisi.

Code HTML du formulaire : saisie du code département via une liste.

Code PHP :
Un bon conseil : commentez les accolades fermantes et indentez bien les lignes de code.

Emploi d'un test basé sur la fonction isset pour ne pas avoir la mésaventure de l'exemple précédent.

Le rendu :

Les boucles

Le bloc d'instructions contenu dans un boucle est répété plusieurs fois. On parle d'itérations.

Thème : afficher la table de multiplication par 5 (50 premières lignes : 5*1 = 5 à 5*50 = 250).

Première solution : emploi de la boucle WHILE

Le bloc d'instructions à l'intérieur des accolades est répété tant que $i est inférieur 51 (condition du while).
Pour éviter de boucler à l'infini il faut incrémenter $i dans la boucle.
Il faut aussi éviter que la condition du while ne soit jamais vérifiée ... ($i a une valeur initiale > à 50).

Ici $i est incrémenté de 1 : $i++
Et $i est initialisé à 1 ($i =1 ; ) avant l'entrée dans la boucle.

Le rendu :

Deuxième solution : emploi de la boucle FOR

Reprenons le même thème mais traitons le avec la structure for !

Le code de la partie BODY :

Le rendu :

La table de multiplication inversée :

Le rendu :

La variable $i est initialisée à 50 et à chaque passage dans la boucle elle est décrémentée de 2 ($i-=2).

La bouche for ... each

Pour afficher toutes les valeurs d'un array vous pouvez utiliser "while" ou "for" mais la structure for...each est plus adaptée.
Pour revoir la structure foreach je vous invite à relir le chapitre précédent sur les "arrays".