PhpBB Lab Académie

Rechercher dans ce cours

Cours PHP : Apprendre le PHP : cours gratuit pour débutants

Auteur : phpBB-Lab. Date de cette version : lun. 21 sept. 2026 02:19.

Gérer plusieurs chemins avec elseif

Objectif de la leçon

Continuer dans le même fichier index.php avec l’état réel du fil rouge, comprendre pourquoi if et else ne suffisent pas toujours, utiliser elseif pour ajouter un chemin intermédiaire, comprendre l’ordre d’évaluation des conditions et produire un message différent selon que la conversion PHP n’a pas commencé, est en cours ou est terminée.

Explications

Avant de commencer

Dans la leçon précédente, nous avons écrit nos premières conditions avec :

if



et :

else



Le dossier du fil rouge contient toujours notamment :

index.html
index.php
apropos.html
contact.html
ordinateur.jpg
styles.css



Au début de :

index.php



nous pouvons maintenant avoir :

<?php
$nomSite = 'Mon premier site HTML';
$nombrePages = 3;
$pagesConvertiesPhp = 1;
$pagesRestantes = $nombrePages - $pagesConvertiesPhp;
$messageAccueil = 'Le site possède ' . $nombrePages . ' pages principales et il reste ' . $pagesRestantes . ' pages à faire évoluer vers PHP.';

$progressionCommencee = $pagesConvertiesPhp > 0;
$conversionTerminee = $pagesRestantes === 0;

if ($conversionTerminee)
{
    $messageConversion = 'La conversion PHP du site est terminée.';
}
else
{
    $messageConversion = 'La conversion PHP du site est encore en cours : ' . $pagesRestantes . ' pages restent à faire évoluer.';
}

$formulaireTraite = false;
$formulaireEnAttente = $formulaireTraite === false;

$dernierMessage = null;
$aucunMessage = $dernierMessage === null;
?>



Avec cette structure, nous savons gérer deux situations :

conversion terminée

ou

conversion non terminée



Mais la deuxième situation regroupe en réalité plusieurs états.

La conversion peut :

- ne pas avoir commencé ;
- avoir commencé sans être terminée.

Nous allons donc ajouter un troisième chemin.

Dans cette première leçon du nouveau chapitre, nous allons répondre à quatre questions :

- Pourquoi

if

et

else

ne suffisent-ils pas toujours ?
- Quel est le rôle de

elseif

?
- Dans quel ordre PHP teste-t-il plusieurs conditions ?
- Comment distinguer trois états réels du même projet ?

À la fin de cette leçon, PHP produira un message différent pour :

0 page convertie
1 ou 2 pages converties
3 pages converties



sans introduire encore les opérateurs logiques.

1. Revenir sur la limite de if et else

Nous avons :

if ($conversionTerminee)
{
    ...
}
else
{
    ...
}



Cette structure propose deux chemins.

Le premier correspond à :

conversion terminée



Le second correspond à :

tout le reste



Mais :

tout le reste



peut contenir plusieurs situations différentes.

2. Observer les trois états possibles

Notre site possède :

3



pages principales.

Nous pouvons donc imaginer :

$pagesConvertiesPhp = 0;
= la conversion n’a pas commencé

$pagesConvertiesPhp = 1;
= la conversion est en cours

$pagesConvertiesPhp = 3;
= la conversion est terminée



Nous voulons maintenant que PHP distingue clairement ces trois états.

3. Découvrir elseif

PHP permet d’ajouter une nouvelle condition entre :

if



et :

else



avec :

elseif



Nous pouvons représenter la structure ainsi :

if
= premier chemin

elseif
= chemin intermédiaire

else
= dernier chemin



4. Écrire une première structure à trois chemins

Nous pouvons faire évoluer notre condition ainsi :

if ($conversionTerminee)
{
    $messageConversion = 'La conversion PHP du site est terminée.';
}
elseif ($progressionCommencee)
{
    $messageConversion = 'La conversion PHP du site est en cours.';
}
else
{
    $messageConversion = 'La conversion PHP du site n’a pas encore commencé.';
}



Nous allons maintenant la lire lentement.

5. Le premier if reste prioritaire

PHP commence par :

if ($conversionTerminee)



Il vérifie donc d’abord :

la conversion est-elle terminée ?



Avec l’état actuel :

$pagesConvertiesPhp = 1;
$pagesRestantes = 2;
$conversionTerminee = false;



la réponse est :

false



PHP ne prend donc pas le premier chemin.

6. PHP passe ensuite au elseif

Comme le premier

if

est faux, PHP examine :

elseif ($progressionCommencee)



Nous avons :

$progressionCommencee = $pagesConvertiesPhp > 0;



Avec :

$pagesConvertiesPhp = 1;



la comparaison produit :

true



Le bloc du

elseif

est donc exécuté.

7. Le bloc else n’est plus testé ensuite

Une fois qu’un chemin a été choisi dans cette chaîne :

if
elseif
else



PHP n’exécute pas les blocs suivants de la même chaîne.

Dans notre état actuel :

if
= false

elseif
= true



Le bloc

elseif

est exécuté.

Le bloc

else

est ignoré.

8. Un seul chemin est choisi

Retenez cette règle :

dans une chaîne if / elseif / else,
PHP exécute le premier bloc dont la condition convient



Si aucune condition n’est vraie,

et qu’un

else

existe,

le bloc

else

est exécuté.

9. Améliorer le message du chemin intermédiaire

Nous pouvons maintenant réutiliser :

$pagesRestantes



pour produire un message plus précis.

Remplaçons :

$messageConversion = 'La conversion PHP du site est en cours.';



par :

$messageConversion = 'La conversion PHP du site est en cours : ' . $pagesRestantes . ' pages restent à faire évoluer.';



Avec l’état actuel, le résultat est :

La conversion PHP du site est en cours : 2 pages restent à faire évoluer.



10. Premier état : conversion terminée

Imaginons temporairement :

$pagesConvertiesPhp = 3;



Nous obtenons :

$pagesRestantes = 0;
$conversionTerminee = true;
$progressionCommencee = true;



Deux booléens sont donc vrais :

$conversionTerminee
$progressionCommencee



Mais PHP commence par :

if ($conversionTerminee)



Ce premier test est vrai.

Le message devient :

La conversion PHP du site est terminée.



Le

elseif

n’est pas exécuté.

11. Pourquoi l’ordre des conditions est important

Lorsque :

$pagesConvertiesPhp = 3;



la progression a forcément commencé.

Donc :

$progressionCommencee = true



et :

$conversionTerminee = true



Si nous testions d’abord :

$progressionCommencee



PHP choisirait ce chemin immédiatement.

Il n’arriverait jamais au test :

$conversionTerminee



Nous afficherions alors un message disant que la conversion est simplement en cours, alors qu’elle est terminée.

12. Tester le cas le plus précis en premier

Nous choisissons donc cet ordre :

1. conversion terminée

2. progression commencée

3. aucun de ces deux états



Le cas :

conversion terminée



est plus précis que :

progression commencée



Nous le testons donc en premier.

Retenez surtout :

l’ordre des conditions peut changer le résultat



13. Deuxième état : conversion en cours

Revenons à l’état réel :

$pagesConvertiesPhp = 1;



Nous avons :

$conversionTerminee = false;
$progressionCommencee = true;



PHP ignore le premier bloc,

puis exécute :

elseif ($progressionCommencee)



Le message est :

La conversion PHP du site est en cours : 2 pages restent à faire évoluer.



C’est l’état que nous conserverons à la fin de la leçon.

14. Troisième état : conversion non commencée

Pour observer le troisième chemin, testez temporairement :

$pagesConvertiesPhp = 0;



Nous obtenons :

$pagesRestantes = 3;
$conversionTerminee = false;
$progressionCommencee = false;



Le

if

est faux.

Le

elseif

est faux.

PHP arrive donc à :

else



Le message devient :

La conversion PHP du site n’a pas encore commencé.



15. Remettre l’état réel du fil rouge

Après les tests, remettez :

$pagesConvertiesPhp = 1;



Nous devons retrouver :

$pagesRestantes = 2;
$conversionTerminee = false;
$progressionCommencee = true;



et le message :

La conversion PHP du site est en cours : 2 pages restent à faire évoluer.



16. Remplacer l’ancien if / else

Nous n’allons pas conserver deux structures différentes pour la même décision.

Remplacez l’ancien bloc :

if ($conversionTerminee)
{
    ...
}
else
{
    ...
}



par le nouveau bloc :

if ($conversionTerminee)
{
    $messageConversion = 'La conversion PHP du site est terminée.';
}
elseif ($progressionCommencee)
{
    $messageConversion = 'La conversion PHP du site est en cours : ' . $pagesRestantes . ' pages restent à faire évoluer.';
}
else
{
    $messageConversion = 'La conversion PHP du site n’a pas encore commencé.';
}



Nous faisons évoluer la même logique.

17. Le HTML n’a pas besoin de changer

Dans le contenu principal, nous conservons :

<p><?php echo $messageAccueil; ?></p>
<p><?php echo $messageConversion; ?></p>



Le HTML ne connaît pas le chemin choisi.

Il reçoit simplement la valeur finale de :

$messageConversion



Cette séparation reste utile :

PHP
= choisir le contenu

HTML
= structurer le contenu



18. Le messageAccueil reste également intact

Nous conservons :

$messageAccueil = 'Le site possède ' . $nombrePages . ' pages principales et il reste ' . $pagesRestantes . ' pages à faire évoluer vers PHP.';



Cette variable décrit les nombres.

La variable :

$messageConversion



décrit l’état de progression.

Chaque variable conserve donc un rôle clair.

19. elseif possède sa propre condition

Dans :

elseif ($progressionCommencee)



les parenthèses contiennent une condition,

comme avec

if

.

La différence est que cette condition n’est examinée que si les chemins précédents n’ont pas déjà été choisis.

20. else ne possède toujours pas de condition

Nous écrivons :

else
{
    ...
}



et non :

else (...)
{
    ...
}



Le bloc

else

représente :

tous les cas restants



Il n’a donc pas besoin d’une nouvelle condition.

21. Peut-on avoir plusieurs elseif ?

Oui.

Une chaîne peut contenir plusieurs blocs :

elseif



si plusieurs états doivent être distingués.

Par exemple :

if (...)
{
    ...
}
elseif (...)
{
    ...
}
elseif (...)
{
    ...
}
else
{
    ...
}



Nous n’allons pas multiplier les chemins sans besoin réel.

Pour notre fil rouge, un seul

elseif

suffit actuellement.

22. Ne pas ajouter des états artificiels

Nous pourrions inventer de nombreuses catégories de progression.

Mais notre projet possède seulement trois pages principales.

Les trois états :

pas commencé
en cours
terminé



sont suffisants et compréhensibles.

Nous cherchons toujours une logique utile au projet,

pas une démonstration compliquée pour utiliser une syntaxe.

23. Une chaîne de conditions doit rester lisible

Plus une chaîne contient de chemins,

plus l’ordre devient important.

Nous devons pouvoir expliquer chaque étape.

Dans notre cas :

si la conversion est terminée
→ message terminé

sinon, si la progression a commencé
→ message en cours

sinon
→ message pas commencé



Cette lecture correspond directement au code.

24. État final du bloc PHP

À la fin de la leçon, le début de :

index.php



peut être :

<?php
$nomSite = 'Mon premier site HTML';
$nombrePages = 3;
$pagesConvertiesPhp = 1;
$pagesRestantes = $nombrePages - $pagesConvertiesPhp;
$messageAccueil = 'Le site possède ' . $nombrePages . ' pages principales et il reste ' . $pagesRestantes . ' pages à faire évoluer vers PHP.';

$progressionCommencee = $pagesConvertiesPhp > 0;
$conversionTerminee = $pagesRestantes === 0;

if ($conversionTerminee)
{
    $messageConversion = 'La conversion PHP du site est terminée.';
}
elseif ($progressionCommencee)
{
    $messageConversion = 'La conversion PHP du site est en cours : ' . $pagesRestantes . ' pages restent à faire évoluer.';
}
else
{
    $messageConversion = 'La conversion PHP du site n’a pas encore commencé.';
}

$formulaireTraite = false;
$formulaireEnAttente = $formulaireTraite === false;

$dernierMessage = null;
$aucunMessage = $dernierMessage === null;
?>



Dans le contenu principal :

<p><?php echo $messageAccueil; ?></p>
<p><?php echo $messageConversion; ?></p>



25. Vérifier les trois chemins

Vous pouvez maintenant tester successivement :

$pagesConvertiesPhp = 0;



puis :

$pagesConvertiesPhp = 1;



puis :

$pagesConvertiesPhp = 3;



À chaque fois, actualisez :

index.php



et observez le message.

Vous devez obtenir trois résultats différents.

26. Toujours revenir à la valeur réelle

Après les tests, conservez :

$pagesConvertiesPhp = 1;



Le fil rouge représente toujours :

index.php
= page déjà engagée dans la conversion PHP

apropos.html
= encore en HTML

contact.html
= encore en HTML



Nous ne prétendons pas que les autres pages ont déjà été transformées.

27. Le nouveau chapitre commence par affiner les décisions

Dans le chapitre précédent, nous avons appris :

if

else



Nous savons maintenant ajouter :

elseif



Le programme peut donc distinguer plus de deux situations.

Mais nous utilisons encore une seule condition à la fois dans chaque parenthèse.

28. Certaines décisions ont besoin de plusieurs critères

Plus tard, nous pourrions vouloir vérifier quelque chose comme :

la conversion a commencé
et
le formulaire est encore en attente



ou :

la conversion est terminée
ou
aucune page ne reste à faire évoluer



Pour construire ce type de condition, nous devons apprendre à combiner plusieurs expressions booléennes.

29. Ne pas combiner les conditions avant l’explication

Nous n’allons pas encore écrire :

&&
||
!



dans le code du projet.

Ces opérateurs seront expliqués dans la prochaine leçon avant toute utilisation.

Pour le moment, retenez simplement que la prochaine étape consistera à combiner plusieurs conditions déjà comprises.

30. Préparer la prochaine étape

Nous disposons maintenant de plusieurs booléens utiles :

$progressionCommencee
$conversionTerminee
$formulaireEnAttente
$aucunMessage



Ils sont parfaits pour apprendre à combiner des conditions.

Dans la prochaine leçon, nous verrons notamment comment exprimer :

condition A ET condition B

condition A OU condition B

NON condition A



Nous le ferons toujours à partir du même état du projet.

31. Ce que vous devez comprendre avant la prochaine leçon

Vous devez maintenant être capable d’expliquer :

- pourquoi

if / else

ne suffit pas toujours ;
- le rôle de

elseif

;
- pourquoi

elseif

possède une condition ;
- pourquoi

else

n’en possède pas ;
- dans quel ordre PHP vérifie les chemins ;
- pourquoi seul le premier chemin correspondant est exécuté ;
- pourquoi l’ordre des conditions est important ;
- pourquoi nous testons

$conversionTerminee

avant

$progressionCommencee

;
- quel message est choisi avec

$pagesConvertiesPhp = 0

;
- quel message est choisi avec

$pagesConvertiesPhp = 1

;
- quel message est choisi avec

$pagesConvertiesPhp = 3

;
- pourquoi nous revenons à

$pagesConvertiesPhp = 1

après les tests ;
- pourquoi le HTML reste identique alors que la logique PHP devient plus précise.

Retenez surtout :

if
= premier test

elseif
= test supplémentaire si les précédents n’ont pas été retenus

else
= tous les cas restants



Dans la prochaine leçon, nous conserverons ces décisions et nous apprendrons à combiner plusieurs conditions avec les opérateurs logiques.

Exemple commenté

Nous partons de l’état réel :

$pagesConvertiesPhp = 1;
$pagesRestantes = 2;
$progressionCommencee = true;
$conversionTerminee = false;



Nous utilisons :

if ($conversionTerminee)
{
    $messageConversion = 'La conversion PHP du site est terminée.';
}
elseif ($progressionCommencee)
{
    $messageConversion = 'La conversion PHP du site est en cours : ' . $pagesRestantes . ' pages restent à faire évoluer.';
}
else
{
    $messageConversion = 'La conversion PHP du site n’a pas encore commencé.';
}



Le premier test est faux.

Le deuxième est vrai.

PHP choisit donc :

La conversion PHP du site est en cours : 2 pages restent à faire évoluer.



Le même paragraphe HTML continue ensuite à afficher :

<p><?php echo $messageConversion; ?></p>

Exercice à réaliser

Continuez dans le même fichier :

index.php



1. Conserver les données du fil rouge

Vérifiez que vous avez :

$nombrePages = 3;
$pagesConvertiesPhp = 1;
$pagesRestantes = $nombrePages - $pagesConvertiesPhp;
$progressionCommencee = $pagesConvertiesPhp > 0;
$conversionTerminee = $pagesRestantes === 0;



2. Remplacer l’ancien if / else

Utilisez :

if ($conversionTerminee)
{
    $messageConversion = 'La conversion PHP du site est terminée.';
}
elseif ($progressionCommencee)
{
    $messageConversion = 'La conversion PHP du site est en cours : ' . $pagesRestantes . ' pages restent à faire évoluer.';
}
else
{
    $messageConversion = 'La conversion PHP du site n’a pas encore commencé.';
}



3. Vérifier l’état actuel

Avec :

$pagesConvertiesPhp = 1;



vérifiez que le chemin

elseif

est choisi.

4. Tester le premier chemin

Remplacez temporairement :

$pagesConvertiesPhp = 1;



par :

$pagesConvertiesPhp = 3;



Vérifiez que le premier bloc

if

est choisi.

5. Tester le dernier chemin

Remplacez temporairement la valeur par :

$pagesConvertiesPhp = 0;



Vérifiez que le bloc

else

est choisi.

6. Revenir à l’état réel

Remettez :

$pagesConvertiesPhp = 1;



7. Vérifier le HTML

Conservez :

<p><?php echo $messageConversion; ?></p>



sans ajouter de condition dans le HTML.

8. Expliquer ce que vous avez fait

Sans regarder la correction, expliquez avec vos propres mots :

1. pourquoi

elseif

est nécessaire ici ;
2. quel bloc est testé en premier ;
3. pourquoi

$conversionTerminee

doit être testé avant

$progressionCommencee

;
4. ce qui se passe lorsqu’un

elseif

est vrai ;
5. le rôle du bloc

else

;
6. pourquoi la valeur finale doit revenir à

1

;
7. quelle notion sera nécessaire pour combiner plusieurs conditions dans la prochaine leçon.

Correction et résultat attendu

À la fin de l’exercice, le début de :

index.php



peut être :

<?php
$nomSite = 'Mon premier site HTML';
$nombrePages = 3;
$pagesConvertiesPhp = 1;
$pagesRestantes = $nombrePages - $pagesConvertiesPhp;
$messageAccueil = 'Le site possède ' . $nombrePages . ' pages principales et il reste ' . $pagesRestantes . ' pages à faire évoluer vers PHP.';

$progressionCommencee = $pagesConvertiesPhp > 0;
$conversionTerminee = $pagesRestantes === 0;

if ($conversionTerminee)
{
    $messageConversion = 'La conversion PHP du site est terminée.';
}
elseif ($progressionCommencee)
{
    $messageConversion = 'La conversion PHP du site est en cours : ' . $pagesRestantes . ' pages restent à faire évoluer.';
}
else
{
    $messageConversion = 'La conversion PHP du site n’a pas encore commencé.';
}

$formulaireTraite = false;
$formulaireEnAttente = $formulaireTraite === false;

$dernierMessage = null;
$aucunMessage = $dernierMessage === null;
?>



Dans le contenu principal :

<p><?php echo $messageAccueil; ?></p>
<p><?php echo $messageConversion; ?></p>



Avec la valeur réelle :

$pagesConvertiesPhp = 1;



nous avons :

$conversionTerminee = false;
$progressionCommencee = true;



PHP exécute donc le bloc :

elseif



et produit :

La conversion PHP du site est en cours : 2 pages restent à faire évoluer.



Dans la prochaine leçon, nous conserverons ce nouvel état et nous apprendrons à combiner plusieurs conditions avec les opérateurs logiques.

À retenir

Cette leçon ouvre le chapitre :

Construire des décisions plus complètes



Nous avons appris que

if

et

else

ne suffisent pas toujours lorsque plusieurs états doivent être distingués.

Nous avons ajouté :

elseif



pour construire trois chemins :

if
= conversion terminée

elseif
= conversion en cours

else
= conversion non commencée



Nous avons aussi appris que l’ordre des conditions compte.

Le programme teste d’abord :

$conversionTerminee



puis :

$progressionCommencee



car une conversion terminée est également une progression déjà commencée.

Avec l’état réel :

$pagesConvertiesPhp = 1;



le chemin

elseif

est choisi.

Le HTML continue à afficher simplement :

<p><?php echo $messageConversion; ?></p>



La logique reste donc séparée de la structure de la page.

Dans la prochaine leçon, nous garderons plusieurs booléens déjà présents dans le fil rouge et nous apprendrons à les combiner avec les opérateurs logiques, avant de construire des décisions encore plus précises.

Seuil de réussite, en pourcentage : 100 %. QCM obligatoire pour terminer le cours.

Sommaire du cours

Découvrir PHP et exécuter son premier script

  1. Comprendre le rôle de PHP et créer sa première page PHP
  2. Créer et utiliser ses premières variables PHP
  3. Comprendre les principaux types de valeurs en PHP

Manipuler les valeurs et préparer les décisions

  1. Manipuler les valeurs avec les premiers opérateurs PHP
  2. Comparer des valeurs avec les opérateurs de comparaison
  3. Prendre ses premières décisions avec if et else

Construire des décisions plus complètes

  1. Gérer plusieurs chemins avec elseif
  2. Combiner plusieurs conditions avec les opérateurs logiques
  3. Organiser des conditions complexes sans perdre la lisibilité

Regrouper et parcourir des valeurs avec les tableaux

  1. Regrouper plusieurs valeurs dans un premier tableau PHP
  2. Associer plusieurs informations avec les tableaux associatifs
  3. Parcourir un tableau avec foreach

Consolider les bases et finaliser le projet PHP

  1. Répéter avec for et choisir la boucle adaptée
  2. Créer et utiliser ses premières fonctions PHP
  3. Traiter et valider le formulaire de contact avec PHP