Prendre ses premières décisions avec if et else
Objectif de la leçon
Continuer dans le même fichier index.php avec les booléens préparés dans la leçon précédente, comprendre le rôle d’une condition, utiliser if pour exécuter un bloc lorsque sa condition est vraie, ajouter else pour prévoir un second chemin lorsque la condition est fausse et produire un vrai message dynamique lié à l’état de conversion du site.
Explications
Avant de commencer
Dans la leçon précédente, nous avons appris à comparer des valeurs.
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;
$formulaireTraite = false;
$formulaireEnAttente = $formulaireTraite === false;
$dernierMessage = null;
$aucunMessage = $dernierMessage === null;
?>
Nous savons maintenant produire des booléens :
true
false
Mais nous ne les utilisons pas encore pour choisir ce que PHP doit faire.
C’est précisément le rôle d’une condition.
Dans cette leçon, nous allons répondre à quatre questions :
- Qu’est-ce qu’une condition ?
- Comment utiliser
if ?
- Que se passe-t-il lorsque la condition est fausse ?
- Comment utiliser
else pour prévoir un second chemin ?
À la fin de cette leçon, PHP choisira lui-même un message différent selon que la conversion du petit site vers PHP est terminée ou encore en cours.
1. Qu’est-ce qu’une condition ?
Une condition permet à un programme de choisir s’il doit exécuter un bloc de code.
Nous pouvons représenter l’idée ainsi :
si une condition est vraie,
exécuter un bloc
sinon,
ne pas exécuter ce bloc
En PHP, le mot utilisé pour :
si
est :
if
2. Reprendre le booléen conversionTerminee
Nous avons déjà :
$conversionTerminee = $pagesRestantes === 0;
Avec l’état actuel du projet :
$pagesRestantes = 2;
La comparaison :
2 === 0
produit :
false
Nous pouvons donc utiliser directement :
$conversionTerminee
comme condition.
3. Écrire notre premier if
Pour commencer, nous allons faire un test temporaire.
Ajoutez :
if ($conversionTerminee)
{
echo 'La conversion PHP du site est terminée.';
}
Nous allons maintenant décomposer cette structure.
4. Comprendre le mot if
Le mot :
if
signifie :
si
Nous pouvons donc lire :
if ($conversionTerminee)
ainsi :
si $conversionTerminee est vraie
PHP examine la valeur placée entre parenthèses.
5. Comprendre les parenthèses
Dans :
if ($conversionTerminee)
les parenthèses contiennent la condition à vérifier.
Ici, cette condition est déjà un booléen :
$conversionTerminee
Il vaut actuellement :
false
Le bloc associé au
if ne sera donc pas exécuté.
6. Comprendre les accolades
Après la condition, nous avons :
{
echo 'La conversion PHP du site est terminée.';
}
Les accolades délimitent le bloc de code associé au
if.
Nous pouvons lire :
si la condition est vraie,
exécuter tout ce qui se trouve entre les accolades
Même lorsqu’un bloc ne contient qu’une seule instruction, nous utiliserons les accolades dans ce cours.
Elles rendent la structure plus claire.
7. Pourquoi aucun message n’apparaît-il ?
Notre condition vaut :
false
PHP n’exécute donc pas :
echo 'La conversion PHP du site est terminée.';
C’est le comportement attendu.
Nous venons de voir qu’un
if peut empêcher l’exécution d’un bloc.
8. Faire un test temporaire avec true
Pour vérifier le mécanisme, remplacez temporairement :
$conversionTerminee = false;
par une variable de test :
$testCondition = true;
Puis utilisez :
if ($testCondition)
{
echo 'Le bloc a été exécuté.';
}
Cette fois, le message apparaît.
Supprimez ensuite :
$testCondition
et ce test temporaire.
Nous revenons au vrai booléen du projet.
9. Ne pas modifier conversionTerminee pour forcer le résultat
Nous pourrions changer artificiellement :
$conversionTerminee
en :
true
Mais ce serait incohérent avec l’état réel du projet.
Nous conservons :
$conversionTerminee = $pagesRestantes === 0;
Le booléen doit continuer à être calculé à partir des vraies données du fil rouge.
10. if peut aussi utiliser une comparaison directement
Nous pourrions écrire :
if ($pagesRestantes === 0)
{
echo 'La conversion PHP du site est terminée.';
}
Cette écriture fonctionne.
Mais nous avons déjà donné un nom clair au résultat :
$conversionTerminee
Nous préférons donc :
if ($conversionTerminee)
{
...
}
Le code est plus facile à lire.
11. Une condition vraie exécute le bloc
Imaginons que, plus tard, les trois pages soient devenues des pages PHP.
Nous aurions :
$pagesConvertiesPhp = 3;
Donc :
$pagesRestantes = 3 - 3;
ce qui produit :
0
Puis :
$conversionTerminee = $pagesRestantes === 0;
produirait :
true
Le bloc du
if serait alors exécuté.
12. Le problème du if seul
Avec notre état actuel, la conversion n’est pas terminée.
Le
if seul n’affiche donc rien.
Mais nous voulons pouvoir produire un message dans les deux situations :
conversion terminée
ou
conversion encore en cours
Pour cela, nous allons ajouter :
else
13. Découvrir else
Le mot :
else
signifie ici :
sinon
Nous pouvons donc écrire :
if ($conversionTerminee)
{
echo 'La conversion PHP du site est terminée.';
}
else
{
echo 'La conversion PHP du site est encore en cours.';
}
Nous avons maintenant deux chemins possibles.
14. Lire if et else en français
Nous pouvons lire la structure ainsi :
si $conversionTerminee est vraie,
afficher le message de fin
sinon,
afficher le message indiquant que la conversion continue
Un seul des deux blocs sera exécuté.
15. Ce qui se passe avec l’état actuel
Nous avons :
$conversionTerminee = false;
PHP ignore donc le bloc :
if
et exécute le bloc :
else
Le message produit est :
La conversion PHP du site est encore en cours.
16. Ne pas afficher le message directement depuis le bloc final
Le test avec
echo nous a permis de comprendre le mécanisme.
Mais dans notre projet, nous allons conserver une séparation simple :
PHP choisit la valeur du message
HTML affiche le message
Nous allons donc stocker le résultat dans une variable.
17. Créer messageConversion
Remplacez le test précédent par :
if ($conversionTerminee)
{
$messageConversion = 'La conversion PHP du site est terminée.';
}
else
{
$messageConversion = 'La conversion PHP du site est encore en cours.';
}
Nous n’affichons rien dans les deux blocs.
Nous attribuons simplement une valeur à :
$messageConversion
18. Une seule variable, deux valeurs possibles
Si :
$conversionTerminee
vaut :
true
alors :
$messageConversion
reçoit :
'La conversion PHP du site est terminée.'
Sinon, elle reçoit :
'La conversion PHP du site est encore en cours.'
Dans les deux cas, la variable possède une valeur après la condition.
19. Utiliser les données déjà calculées
Le message du bloc
else peut être plus utile.
Nous pouvons écrire :
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.';
}
Avec l’état actuel :
$pagesRestantes = 2;
PHP produit :
La conversion PHP du site est encore en cours : 2 pages restent à faire évoluer.
20. Réutiliser la concaténation apprise précédemment
Dans :
'La conversion PHP du site est encore en cours : ' . $pagesRestantes . ' pages restent à faire évoluer.'
nous utilisons :
.
pour concaténer le texte avec :
$pagesRestantes
Nous ne découvrons pas une nouvelle notion ici.
Nous réutilisons la concaténation apprise dans la leçon 4.
21. Afficher le message dans le HTML
Dans le contenu principal de :
index.php
après :
<p><?php echo $messageAccueil; ?></p>
ajoutez :
<p><?php echo $messageConversion; ?></p>
Le HTML conserve son rôle :
p
= paragraphe
PHP produit uniquement le texte choisi.
22. Vérifier le résultat
Enregistrez :
index.php
Puis actualisez :
http://localhost/mon-premier-site/index.php
Vous devez maintenant voir notamment :
Le site possède 3 pages principales et il reste 2 pages à faire évoluer vers PHP.
La conversion PHP du site est encore en cours : 2 pages restent à faire évoluer.
La seconde phrase a été choisie par la structure :
if / else
23. Tester l’autre chemin sans casser le fil rouge
Pour observer temporairement l’autre branche, vous pouvez remplacer uniquement pendant le test :
$pagesConvertiesPhp = 1;
par :
$pagesConvertiesPhp = 3;
PHP calcule alors :
$pagesRestantes = 0;
puis :
$conversionTerminee = true;
Le message devient :
La conversion PHP du site est terminée.
Remettez ensuite :
$pagesConvertiesPhp = 1;
Le projet doit revenir à son état réel.
24. Comprendre pourquoi le message change automatiquement
Nous ne modifions pas directement :
$messageConversion
pour passer d’une phrase à l’autre.
Nous modifions une donnée du projet :
$pagesConvertiesPhp
Cette donnée change :
$pagesRestantes
puis :
$conversionTerminee
et enfin le
if / else choisit le message.
Nous avons donc une vraie chaîne logique :
donnée
calcul
comparaison
décision
message
25. Utiliser un second if simple
Nous avons aussi :
$progressionCommencee = $pagesConvertiesPhp > 0;
Nous pouvons faire une expérience temporaire :
if ($progressionCommencee)
{
$messageProgression = 'La conversion PHP a commencé.';
}
Comme la valeur est actuellement :
true
le bloc est exécuté.
Ce test permet de revoir
ifsans
else.
Supprimez ensuite cette variable de test.
26. Quand utiliser if seul ?
Un
if seul convient lorsque nous avons besoin d’exécuter quelque chose uniquement si une condition est vraie.
Nous n’avons pas toujours besoin d’un second chemin.
Par exemple :
si une progression a commencé,
préparer un message particulier
Mais lorsque nous voulons prévoir deux résultats exclusifs,
if / else est plus adapté.
27. Ne pas confondre la condition et le bloc
Dans :
if ($conversionTerminee)
{
$messageConversion = 'La conversion PHP du site est terminée.';
}
la condition est :
$conversionTerminee
Le bloc est :
{
$messageConversion = 'La conversion PHP du site est terminée.';
}
PHP évalue d’abord la condition.
Il décide ensuite si le bloc doit être exécuté.
28. L’indentation aide à lire la structure
Nous écrivons :
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.';
}
Les lignes placées à l’intérieur des accolades sont décalées.
Cette indentation ne crée pas la condition.
Elle rend la structure plus facile à lire.
Les accolades, elles, délimitent réellement les blocs.
29. État final du bloc PHP
À la fin de cette leçon, le début de :
index.php
peut devenir :
<?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;
?>
Et dans le contenu principal :
<p><?php echo $messageAccueil; ?></p>
<p><?php echo $messageConversion; ?></p>
30. Le chapitre a maintenant une suite logique
Dans ce chapitre, nous avons avancé dans cet ordre :
opérateurs
comparaisons
conditions
Nous avons d’abord appris à produire des valeurs,
puis à produire des booléens,
et maintenant à prendre une décision à partir de ces booléens.
Nous n’avons utilisé aucune condition avant d’avoir compris les comparaisons.
31. Préparer la prochaine étape
Pour le moment, notre décision possède deux chemins :
if
= premier chemin
else
= second chemin
Mais certaines situations nécessitent plus de deux possibilités.
Nous pourrions par exemple vouloir distinguer :
aucune page convertie
conversion commencée
conversion terminée
Pour cela, PHP permet d’ajouter un chemin intermédiaire avec :
elseif
Nous étudierons cette notion dans la prochaine leçon, qui ouvrira un nouveau chapitre consacré aux décisions plus complètes.
32. Ce que vous devez comprendre avant la prochaine leçon
Vous devez maintenant être capable d’expliquer :
- ce qu’est une condition ;
- le rôle de
if ;
- ce qui se trouve entre les parenthèses du
if ;
- le rôle des accolades ;
- ce qui se passe lorsque la condition vaut
true ;
- ce qui se passe lorsque la condition vaut
false ;
- le rôle de
else ;
- pourquoi un seul des deux blocs
if / else est exécuté ;
- pourquoi nous stockons le message choisi dans
$messageConversion avant de l’afficher ;
- comment les notions précédentes s’enchaînent : données, calcul, comparaison, décision ;
- pourquoi l’état réel du fil rouge reste
$pagesConvertiesPhp = 1 à la fin de la leçon ;
- dans quel cas un
if seul peut suffire.
Retenez surtout :
if
= exécuter un bloc si la condition est vraie
else
= exécuter un autre bloc si la condition est fausse
Dans la prochaine leçon, nous conserverons ce fil rouge et nous ajouterons un troisième chemin avec
elseif.
Exemple commenté
Nous partons de :
$pagesRestantes = $nombrePages - $pagesConvertiesPhp;
$conversionTerminee = $pagesRestantes === 0;
Puis nous écrivons :
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.';
}
Avec l’état actuel :
$pagesConvertiesPhp = 1;
$pagesRestantes = 2;
$conversionTerminee = false;
PHP choisit le bloc
else.
Le HTML peut ensuite afficher :
<p><?php echo $messageConversion; ?></p>
sans avoir besoin de connaître le chemin qui a été choisi.
Exercice à réaliser
Continuez dans le même fichier :
index.php
1. Vérifier les données du fil rouge
Conservez :
$nombrePages = 3;
$pagesConvertiesPhp = 1;
$pagesRestantes = $nombrePages - $pagesConvertiesPhp;
$conversionTerminee = $pagesRestantes === 0;
2. Écrire un premier if temporaire
Testez :
if ($conversionTerminee)
{
echo 'La conversion PHP du site est terminée.';
}
Vérifiez qu’aucun message n’apparaît avec l’état actuel.
3. Ajouter else
Remplacez le test précédent par :
if ($conversionTerminee)
{
$messageConversion = 'La conversion PHP du site est terminée.';
}
else
{
$messageConversion = 'La conversion PHP du site est encore en cours.';
}
4. Enrichir le second message
Faites évoluer le bloc
else :
$messageConversion = 'La conversion PHP du site est encore en cours : ' . $pagesRestantes . ' pages restent à faire évoluer.';
5. Afficher le message
Après :
<p><?php echo $messageAccueil; ?></p>
ajoutez :
<p><?php echo $messageConversion; ?></p>
6. Tester l’autre chemin
Remplacez temporairement :
$pagesConvertiesPhp = 1;
par :
$pagesConvertiesPhp = 3;
Actualisez la page et vérifiez que le message change.
Remettez ensuite :
$pagesConvertiesPhp = 1;
7. Vérifier l’état final
Le projet doit revenir à son état réel, avec une page PHP sur trois.
8. Expliquer ce que vous avez fait
Sans regarder la correction, expliquez avec vos propres mots :
1. ce que fait
if ;
2. ce que représente la condition entre parenthèses ;
3. le rôle des accolades ;
4. le rôle de
else ;
5. pourquoi un seul bloc est exécuté ;
6. pourquoi
$messageConversion reçoit une valeur différente selon la condition ;
7. pourquoi la prochaine leçon aura besoin d’un troisième chemin.
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.';
}
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;
?>
Dans le contenu principal :
<p><?php echo $messageAccueil; ?></p>
<p><?php echo $messageConversion; ?></p>
Avec :
$pagesConvertiesPhp = 1;
nous avons :
$pagesRestantes = 2;
$conversionTerminee = false;
PHP exécute donc le bloc
else.
Le message affiché est :
La conversion PHP du site est encore en cours : 2 pages restent à faire évoluer.
Dans la prochaine leçon, nous ajouterons un troisième chemin avec
elseifpour distinguer plusieurs états de progression.
À retenir
Dans cette leçon, nous avons utilisé pour la première fois les booléens afin de prendre une décision.
Nous avons appris :
if
= exécuter un bloc lorsque la condition est vraie
else
= exécuter un autre bloc lorsque la condition est fausse
Nous avons utilisé le booléen déjà préparé :
$conversionTerminee = $pagesRestantes === 0;
puis :
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.';
}
Nous avons ensuite affiché le résultat avec le HTML déjà connu :
<p><?php echo $messageConversion; ?></p>
Le fil rouge suit maintenant cette logique :
données
→ calcul
→ comparaison
→ décision
→ message
Cette leçon termine le chapitre « Manipuler les valeurs et préparer les décisions ».
Dans la prochaine leçon, un nouveau chapitre commencera. Nous ajouterons
elseifafin de gérer plus de deux chemins sans introduire encore les opérateurs logiques complexes.
Seuil de réussite, en pourcentage : 100 %. QCM obligatoire pour terminer le cours.