Les conditions sont d'une importance capitale, leur emploi étant inéluctable en PHP.
Les données à afficher sont souvent soumises à condition. Exemple, si c'est le matin, on afficherait "Bonjour", si c'est le soir, "Bonsoir".
Cela permet d'afficher des choses différentes, de rendre le site dynamique.
Sommaire
La structure de base : If… Else
Une condition peut être écrite en PHP sous différentes formes. On parle de structures conditionnelles.
Celle-ci est la principale. Pour étudier la structure
If… Else
, on suit le plan suivant :
- Les symboles à connaître : il faut retenir quelques symboles permettant de faire des comparaisons
- La structure If… Else : le plus important, on voit comment fonctionne une condition avec If… Else.
- Des conditions multiples : on complique un peu les conditions, on peut utiliser plusieurs conditions à la fois.
- Le cas des booléens : il existe une façon particulière d'utiliser les conditions quand on travaille sur des booléens.
- L'astuce bonus : un plus.
Les symboles à connaître
Un tableau des symboles susceptibles d'être utilisés
Symbole | Signification |
== | Est égal à |
> | Est supérieur à |
< | Est inférieur à |
>= | Est supérieur ou égal à |
<= | Est inférieur ou égal à |
!= | Est différent de |
 |
Le double égal (==) sert à tester l'égalité : " si égal à…"
A ne pas confondre avec le simple égal. Dans les conditions, on utilise toujours le double égal (==) |
La structure If… Else
Voici ce qu'on doit mettre dans l'ordre pour utiliser une condition :
if
pour introduire la condition
- on ajoute entre parenthèses la condition proprement dite.
- puis on ouvre des accolades qui contiendront les instructions à executer si la condition est remplie
Prenons un exemple :
Code PHP
<?php
$age = 8;
if ($age <= 12)
{
echo "salut gamin !";
}
?>
Ici, on demande à PHP : Si la variable est inférieur ou égal à 12, affiche "Salut gamin !"
Là, on travaille sur la variable $age
. Si la condition est remplie, on affiche le message, sinon rien.
On va voir pour méliorer cet exemple en affichant un message si l'âge est supérieur à 12 ans
Code PHP
<?php
$age = 8;
if ($age <= 12) // si l'âge est inférieur ou égal à 12
{
echo "salut gamin ! Bienvenue sur mon site !<br />";
$autorisation_entrer = "Oui";
}
else // sinon
{
echo "Désolé, c'est un site pour les enfants. Au revoir !<br />";
$autorisation_entrer = "Non";
}
echo "Avez-vous l'autorisation d'entrer ? La réponse est : $autorisation_entrer";
?>
On a rajouté else
avec une autre instruction.
Et on a donné une valeur différente à la variable $autorisation_entrer
Le fait d'avoir rajouté une valeur différente à la variable
$autorisation_entrer
peut servir pour la suite. Exemple :
Code PHP
<?php
if ($autorisation_entrer == "Oui") // si on a l'autorisation d'entrer
{
// instructions à exécuter si on a l'autorisation d'entrer
}
elseif ($autorisation_entrer == "Non") // sinon si on n'a pas l'autorisation d'entrer
{
// instructions à exécuter si on n'a pas l'autorisation d'entrer
}
else // sinon (la variable ne contient ni Oui ni Non, on ne peut pas agir)
{
echo "Euh, je ne connais pas ton âge, peux-tu me le donner s'il te plaît ?";
}
?>
Ici, on utilise elseif
qui signifie "sinon si". Dans l'ordre, PHP rencontre les conditions suivantes :
1/ si $autorisation_entrer
est égale à "Oui", tu exécute ces instructions…
2/ si $autorisation_entrer
est égale à "Non", tu exécute ces autres instructions…
3/ sinon, tu redemandes l'âge pour savoir si autorisation d'entrer ou pas.
 |
Au départ, une variable ne contient rien. Sa valeur est vide, on dit qu'elle vaut NULL.
Pour vérifier si la variable est vide, on peut taper : if ($variable == NULL)… |
Le cas des booléens
Si on reprend le dernier code source (avec
$autorisation_entrer
), il serait plus adapté d'utiliser des booléens.
Ce sont des variables qui valent soit
true
, soit
false
, ce qui est particulièrement utile. Voici comment on teste une variable booléenne :
Code PHP
<?php
if ($autorisation_entrer == true)
{
echo "Bienvenue cher ami :o)";
}
elseif ($autorisation_entrer == false)
{
echo "T'as pas le droit d'entrer !";
}
?>
Mais un des avantages des booléens, c'est qu'ils sont particulièrement adaptés aux conditions : on n'est pas obligé d'ajouter
== true
.
Quand on travaille sur une variable booléenne, PHP comprend parfaitement :
Code PHP
<?php
if ($autorisation_entrer)
{
echo "Bienvenue cher ami :o)";
}
elseif ($autorisation_entrer)
{
echo "T'as pas le droit d'entrer !";
}
?>
PHP comprend qu'il faut vérifier si $autorisation_entrer
vaut true
Avantage : c'est plus rapide et plus clair.
En effet, quand on lit la première ligne, ça donne : "si on a l'autorisation d'entrer&hellip"
 |
Avec cette méthode "courte", comment fait-on si on veut vérifier si le booléen vaut faux ? |
Il y a un symbole qui permet de vérifier si la variable vaut
false
: le point d'exclamation
!. On écrit :
Code PHP
<?php
if (! $autorisation_entrer)
{
}
?>
C'est une autre façon. On aurait aussi pu mettre if ($autorisation_entrer == false)
. Mais la méthode "courte" est plus lisible.
Des conditions multiples
Elles sont pratiques. Mais pour donner plusieurs conditions à la fois, on a besoin de nouveaux mots-clés dont voici les principaux :
Mot-clé | Signification | Symbole équivalent |
AND | Et | |
OR | Ou | || |
Un exemple :
Code PHP
<?php
if ($age <= 12 AND $sexe == "garçon")
{
echo "Bienvenue sur le site de Captain Mégakill !";
}
if ($age <= 12 AND $sexe == "fille")
{
echo "C'est pas un site pour les filles ici !";
}
?>
Autre exemple avec OR
Code PHP
<?php
if ($sexe == "fille" OR $sexe == "garçon")
{
echo "Salut Terrien !";
}
else
{
echo "Euh, si t'es ni une fille ni un garçon, t'es quoi ?";
}
?>
L'astuce bonus
Avec les conditions, il y a une astuce à connaître.
Les deux codes ci-dessous donnent le même résultat :
Code PHP
<?php
if ($variable == 23)
{
echo ´Bravo ! Vous avez trouvé le nombre mystère !´;
}
?>
Code PHP
<?php
if ($variable == 23)
{
?>
´Bravo ! Vous avez trouvé le nombre mystère !´;
<?php
}
?>
Dans le second exemple, on n'a pas utilisé
echo
. En effet, il suffit d'ouvrir l'accolage (
{), puis de fermer avec la balise php (
?>),
et on peut mettre tout le texte à afficher que l'on veut en html.
Cela est pratique quand il y a beaucoup de texte à afficher et sans se prendre la tête avec les backslash devant les guillemets (
" ou
´).
Penser à refermer l'accolade après, à l'intérieur d'une balise PHP.
Une alternative pratique : Switch
En théorie, les structures à base de ii… elseif… else… suffisent pour traiter n'importe quelle condition.
Mais d'autres structures peuvent faciliter le travail.
Reprenons un exemple :
Code PHP
<?php
if ($note == 0)
{
echo "Tu es vraiment un zéro !";
}
elseif ($note == 5)
{
echo "Tu es vraiment un très mauvais";
}
elseif ($note == 7)
{
echo "Tu es mauvais";
}
elseif ($note == 10)
{
echo "Tu as pile poil la moyenne";
}
elseif ($note == 12)
{
echo "Tu es assez bon";
}
elseif ($note == 16)
{
echo "Excellent travail !";
}
else
{
echo "Désolé, je n'ai pas de message à afficher pour cette note";
}
?>
C'est long et répétitif
Le même avec switch
Code PHP
<?php
$note == 10;
switch ($note) // on indique sur quelle variable on travaille
{
case 0: // dans le cas où $note vaut 0
echo "Tu es vraiment un zéro !";
break;
case 5: // dans le cas où $note vaut 5
echo "Tu es vraiment un très mauvais";
break;
case 7: // dans le cas où $note vaut 7
echo "Tu es mauvais";
break;
case 10: // etc etc
echo "Tu as pile poil la moyenne";
break;
case 12: // etc etc
echo "Tu es assez bon";
break;
case 16: // etc etc
echo "Excellent travail !";
break;
default
echo "Désolé, je n'ai pas de message à afficher pour cette note";
}
?>
Il y a moins d'accolades.
case
signifie "cas". Dans le switch, on indique au début sur quelle variable on travaille (ici
$note
)
On dit à PHP :
je vais analyser la valeur de $note
On utilise des
case
pour analyser chaque cas.
Plus besoin de mettre le double égal. Par contre
switch
ne peut tester que l'égalité.
Ne marche pas avec les autres symboles (
< > <= >= !=).
 |
Le mot-clé default est l'équivalent de else |
Important à savoir avec l'utilisation de switch, si la note est de 10, PHP exécute les instruction jusqu'à 10. Mais contrairement aux
elseif
, il
continue à lire les instructions suivantes.
Pour empêcher cela, on utilise l'instruction
break
. Cette instruction demande à PHP de sortir du switch. Dès que PHP tombe sur
break
,
il sort des accolades et donc, il ne lit pas les
case
qui suivent. Pour comprendre qu'elles sont indispensables, il suffit de tester le code précédent sans les
break
!
 |
Quand choisir if , et quand choisir switch ? |
C'est un problème de clarté
Les ternaires : des conditions condensées
Autre forme de condition, beaucoup moins fréquente. Un ternaire est une condition condenséeacute;e qui fait deux choses sur une seule ligne :
- On teste la valeur d'une variable dans une condition
- On affecte une valeur à une variable selon que la condition est vraie ou non.
Exemple à base de
if… else
qui met un booléen
$majeur
à vrai selon l'âge du visiteur :
Code PHP
<?php
$age = 24;
if ($age >= 18)
{
$majeur = true;
}
else
{
$majeur = false;
}
?>
Avec une structure ternaire, la même chose en une ligne
Code PHP
<?php
$age = 24;
$majeur = ($age >= 18) ? true : false;
?>