Les conditions sont les elements les plus utilises dans n'importe quel langage. Il est impossible de faire l'impasse dessus. Grace aux conditions, vous allez pouvoir effectuer des actions telles que "Si le visiteur est un homme, afficher 'Bonjour Monsieur', sinon afficher 'Bonjour Madame'". Vous allez pouvoir effectuer plein de traitements en fonction de donnees diverses. Une condition n'est ni plus ni moins qu'un bloc de code PHP contenant des instructions a executer en fonction de la condition qui elle sera placee entre parentheses (bien que ce ne soit pas toujours le cas, on verra tout en bas l'operateur ternaire, en attendant ne soyez pas affoles par le terme, tout deviendra comprehensif plus bas). Voyons deja quelques operateurs necessaires pour appliquer tout ca aux conditions :
On utilise quelques operateurs tres simples en PHP pour comparer deux variables. Nous ne verrons pas certains operateurs particuliers qui depassent le cadre de ce chapitre, mais vous les reverrez dans la partie qui concernera l'optimisation et la redaction de vos scripts. Voici les operateurs de base et leur signification :
| Symbole | Signification |
| $a == $b | $a est egal a $b |
| $a < $b | $a est inferieur a $b |
| $a > $b | $a est superieur a $b |
| $a <= $b | $a est inferieur ou egal a $b |
| $a >= $b | $a est superieur ou egal a $b |
| $a != $b | $a est different de $b |
| $a <> $b | $a est different de $b |
La structure if / else est la base en PHP. Grace a elle, vous allez pouvoir effectuer deux choses : une action si la condition est vraie, et une autre action si elle est fausse. On traduit le if par "si" et le else par "sinon". Voyons un exemple :
<?php
$heure = 12; //On definit une heure
if($heure < 12) //Si l'heure contenue dans la variable est inferieure a 12
{
echo 'Il n\'est pas encore midi !';
}
?>
Vous constaterez en executant ce code qu'en fonction de ce que vous allez attribuer a la variable $heure, le message "Il n'est pas encore midi" s'affichera ou non. Vous pouvez tout a fait effectuer plusieurs actions dans une condition. Vous pouvez egalement imbriquer des conditions :
<?php
$heure = 12; //On definit une heure
if($heure < 12) //Si l'heure contenue dans la variable est inferieure a 12
{
echo 'Il n\'est pas encore midi !';
if($heure == 11)
{
echo 'Il est bientôt midi !';
}
}
?>
Notez l'utilisation du double egal, si vous mettez un simple signe egal, ca voudra dire "si j'ai attribue 11 a la variable, alors faire l'action", le probleme est qu'attribuer une valeur a une variable renvoie toujours (dans notre cas) la valeur VRAI, donc la condition sera toujours executee. Pensez-y lorsque vous coderez vos scripts PHP car sinon vous risquez de vous retrouver avec des erreurs insolubles !
Bon tout ca c'est bien beau, mais vous aimeriez peut-etre passer a plus evolue ! Nous allons donc voir maintenant le if / else en PHP. Else signifie "sinon", nous allons prendre un exemple simple qui consiste a comparer les valeurs de deux variables. Si les deux variables sont egales, nous afficherons "Les valeurs sont egales" dans le cas contraire nous afficherons "Les valeurs ne sont pas egales".
<?php
$nombre1 = 12;
$nombre2 = 13;
if($nombre1 == $nombre2) //Si les deux nombres sont egaux
{
echo 'Les valeurs sont egales';
}
else //Sinon
{
echo 'Les valeurs ne sont pas egales';
}
?>
Nous allons maintenant voir une autre structure de base un peu plus evoluee que le if / else, il s'agit du if / elseif / else.
En francais, on appelle cette structure le "si, sinon si, sinon". Grace a ca, vous allez pouvoir executer des instructions PHP en fonction de conditions plus poussees. Prenons un exemple simple consistant a dire "Si les deux nombres sont egaux, on affiche 'Les valeurs sont egales' sinon si le nombre 1 est superieur au nombre 2 on affiche 'Le nombre 1 est superieur' et si aucune de ces conditions n'est validee, on affiche 'Le nombre 2 est superieur'".
Voyons ce que ca donne niveau code :
<?php
$nombre1 = 12;
$nombre2 = 13;
if($nombre1 == $nombre2) //Si les deux nombres sont egaux
{
echo 'Les valeurs sont egales';
}
elseif($nombre1 > $nombre2) //Les deux nombres ne sont pas egaux mais $nombre1 est superieur a $nombre2
{
echo 'Le nombre 1 est superieur';
}
else //Les deux nombres ne sont pas egaux, et $nombre1 n'est pas superieur a $nombre2
{
echo 'Le nombre 2 est superieur';
}
?>
Au niveau purement syntaxique, le code que je viens de vous presenter est equivalent a celui-ci :
<?php
$nombre1 = 12;
$nombre2 = 13;
if($nombre1 == $nombre2) //Si les deux nombres sont egaux
{
echo 'Les valeurs sont egales';
}
else //Les deux nombres ne sont pas egaux
{
if($nombre1 > $nombre2) //$nombre1 est superieur a $nombre2
{
echo 'Le nombre 1 est superieur';
}
else //$nombre1 n'est pas superieur a $nombre2
{
echo 'Le nombre 2 est superieur';
}
}
?>
Les conditions multiples vont vous permettre de donner plusieurs conditions pour effectuer une ou plusieurs actions. Par exemple, si vous souhaitez que les visiteurs aient plus de 13 ans pour visiter le site et qu'ils soient des hommes, vous pourrez faire une condition de ce style :
<?php
$homme = FALSE; //booleen ayant la valeur FALSE (faux) ici il s'agit donc d'une femme
$age = 17;
if($homme === TRUE AND $age > 13) //Le visiteur est un homme et age de plus de 13 ans
{
echo 'Vous pouvez visiter le site';
}
else //Le visiteur est une femme ou alors il a moins de 13 ans
{
echo 'Vous ne pouvez pas visiter le site';
}
?>
Notez la presence ici du triple egal. Ce n'est pas une erreur. Je ne vous ai pas presente cet operateur auparavant pour ne pas compliquer la tache. En fait cet operateur, en plus de comparer les valeurs des variables, compare egalement leurs types (bien que la notion de type soit tres faible en PHP). Cet operateur permet de valider une condition si les variables ont meme valeur et meme type. En fait, un booleen peut aussi etre represente par un nombre (0 pour FALSE et 1 pour TRUE). Le probleme est que lorsque vous utiliserez des fonctions qui renvoient des booleens ou des nombres, comment distinguer 0 et 1 de FALSE et TRUE ?. C'est la qu'intervient le signe ===, qui vous permettra de savoir si la fonction a renvoye TRUE ou 1, ce que ne permet pas de faire l'operateur ==
Il existe de la meme maniere l'operateur !== qui regarde si deux variables sont de valeurs ou de types differents.
Voyons maintenant la liste des operateurs utilisables :
| Operateur | Signification |
| AND | "et" logique |
| OR | "ou" logique |
| XOR | "ou exclusif" logique |
| && | "et" logique, avec priorite superieure |
| || | "ou" logique, avec priorite superieure |
Voyons un peu les operateurs && et || ainsi que leurs differences avec les operateurs AND et OR. Prenons le cas d'une condition qui doit verifier "Si il s'agit d'un homme ou d'une femme qui a dans ce cas plus de 13 ans, on autorise l'acces au site". On constate que tous les hommes peuvent acceder au site, mais les femmes doivent avoir au moins 13 ans. On peut faire ca de plusieurs facons. La premiere, purement logique, utilise des parentheses (en effet, ce qui se trouve entre parentheses sera traite en premier par PHP, comme en mathematiques) :
<?php
if($homme === TRUE OR ($hommme === FALSE AND $age > 13)) //On veut soit tous les hommes, soit les filles de plus de 13 ans
{
echo 'Vous pouvez visiter le site';
}
else
{
echo 'Vous ne pouvez pas visiter le site';
}
?>
Vous constatez qu'au bout d'un moment, si les conditions sont multiples, le nombre de parentheses peut etre important, nous allons donc utiliser les operateurs prioritaires && et || pour supprimer les parentheses. Voici le code obtenu :
<?php
if($homme === TRUE OR $hommme === FALSE && $age > 13) //On veut soit tous les hommes, soit les filles de plus de 13 ans
{
echo 'Vous pouvez visiter le site';
}
else
{
echo 'Vous ne pouvez pas visiter le site';
}
?>
Comme le && est prioritaire, PHP effectue d'abord le traitement pour savoir si il s'agit d'une fille ayant plus de treize ans. On pourrait simuler ca par ce code :
<?php
if($homme === TRUE OR $fille_de_plus_de_treize_ans === TRUE) //On veut soit tous les hommes, soit les filles de plus de 13 ans
{
echo 'Vous pouvez visiter le site';
}
else
{
echo 'Vous ne pouvez pas visiter le site';
}
?>
Ensuite PHP utilise le OR classique pour faire une condition entre les deux variables.
Le switch est une instruction particuliere. En effet, vous allez pouvoir remplacer des quantites de if/elseif/else par un seul switch. Voyons comment cela fonctionne avec un exemple simple : Imaginions que nous souhaitons afficher un message different en fonction d'un nombre. Si ce nombre vaut 1, on affichera "le nombre vaut 1", si il vaut 2 "le nombre vaut 2", et si il vaut 7, on affichera "c'est un tres bon chiffre". Ceci est possible via le code suivant :
<?php
$nombre = 7;
if($nombre == 1)
{
echo 'Le nombre vaut 1';
}
elseif($nombre == 2)
{
echo 'Le nombre vaut 2';
}
elseif($nombre == 7)
{
echo 'C\'est un tres bon chiffre !';
}
else
{
echo 'Le nombre ne vaut ni 1, ni 2, ni 7';
}
?>
Vous constaterez que si vous voulez faire 10 cas possibles, ca va devenir tres lourd au niveau de la syntaxe.
<?php
$nombre = 7;
switch($nombre)
{
case 1:
echo 'Le nombre vaut 1';
break;
case 2:
echo 'Le nombre vaut 2';
break;
case 7:
echo 'C\'est un tres bon chiffre !';
break;
default:
echo 'Le nombre ne vaut ni 1, ni 2, ni 7';
break;
}
?>
La syntaxe est quand meme nettement plus reduite. Maintenant, nous allons voir a quoi correspondent ces "case", "break" et encore "default". Regardez la structure du switch(). A l'interieur des parentheses, on met une seule variable pour laquelle on souhaitera comparer sa valeur (ou effectuer des conditions dessus). Chaque instruction case permet ensuite de delimiter une condition, on peut donc voir ca comme ca : si $nombre correspond a 1, alors on execute le echo 'Le nombre vaut 1';
Le break veut dire qu'il faut que PHP s'arrete, c'est l'equivalent de la fin de condition. Imaginions que vous ayez le code suivant :
<?php
$nombre = 7;
switch($nombre)
{
case 1:case 2:
echo 'Le nombre vaut 1 ou 2';
break;
case 7:
echo 'C\'est un tres bon chiffre !';
break;
default:
echo 'Le nombre ne vaut ni 1, ni 2, ni 7';
break;
}
?>
Je pense que vous comprenez le fonctionnement du break a present, ainsi que de l'utilisation de conditions OU (ici, on affiche un message different si le nombre vaut soit 1, soit 2). Voyons maintenant comment inserer des conditions plus evoluees dans le switch :
<?php
$nombre = 8;
switch($nombre)
{
case $nombre < 7:
echo 'Le nombre est inferieur a 7';
break;
case 7:
echo 'C\'est un tres bon chiffre !';
break;
case $nombre > 7:
echo 'le nombre est superieur a sept';
break;
default:
echo 'Le nombre ne vaut ni 1, ni 2, ni 7';
break;
}
?>
A noter que vous pouvez tout a fait utiliser des AND, OR, etc ... dans les instructions case du switch !