FriconiX
Des milliers de pictogrammes gratuits dessinés avec amour !

Cours 3.7. Les tests en PHP, l'instruction if...else

Syntaxe

La syntaxe des structures conditionnelles est identique à celle du C :

<?php
if ($a > $b)
{
    echo "<p>a est plus grand que b</p>";
}
else
{
    echo "<p>a n'est pas plus grand que b</p>";
}
?>

Notons que l'utilisation des accolades n'est nécessaire que si le bloc d'instructions de la condition contient plusieurs instructions.

En pratique, lorsque le test sert à afficher du HTML, il existe une autre syntaxe, plus concise, qui permet d'éviter l'utilisation des fonctions d'affichage comme echo. L'avantage de cette deuxième solution est que, dans l'éditeur, la coloration syntaxique est appliquée au code HTML, ce qui n'est pas le cas avec l'exemple précédent :

<?php if ($a > $b): ?>
    <p>a est plus grand que b</p>
<?php else: ?>
    <p>a n'est pas plus grand que b</p>
<?php endif; ?>
}

Syntaxe courte

Il existe une syntaxe courte qui est appropriée lorsque le test et les blocs d'instructions sont très courts :

$var = (test) ? instruction si vrai : instruction si faux;

Cette syntaxe est particulièrement synthétique lorsqu'elle est combinée avec des balises PHP courtes :

<?= ($a>$b) ? '<p>a est plus grand que b</p>'  : '<p>a n\'est pas plus grand que b</p>' ?>

L'exemple interactif suivant montre les trois syntaxes :

Exercice

Le code suivant affiche deux boutons (log in et log out):

Exercice sur les structures conditionnelles avec deux boutons

<?php
$isLogged = true; // or false;
?>

<!-- Display if user is not logged -->
<div class="button_cont" align="center">
  <a 
    href='#'
    target="_blank" 
    style = "background: #0f0; text-decoration: none; padding: 10px; border-radius: 5px; display:inline-block;
    ">
  Log in
  </a>
</div>

<!-- Display if user is logged -->
<div class="button_cont" align="center">
  <a 
    href='#'
    target="_blank" 
    style = "background: #f00; color:white; text-decoration: none; padding: 10px; border-radius: 5px; display:inline-block;
    ">
  Log out
  </a>
</div>

Ajoutez une structure conditionelle afin d'afficher le bouton approprié selon l'état courant de la variable booléenne $isLogged :

Voir aussi


Dernière mise à jour : 23/01/2020