Pour ce tuto sur PHP, nous allons voir comment écrire les conditions if … else … pour permettre ou bloquer des actions et de l’affichage HTML.
Le premier point abordé sera une démonstration de plusieurs d’écriture des conditions. En suite nous verrons un exemple concret pour afficher un lien en fonction du navigateur qu’utilise le navigateur.
Sommaire :
Nous allons voir qu’il existe plusieurs façons d’écrire les conditions if … else … en PHP. Il n’est pas obligatoire de savoir toutes les utiliser. Cependant, les connaître et savoir les lire est très pratique pour pouvoir interpréter le code d’autres personnes.
<?php
$success = true;
if( $success ) {
echo '<div class="success">Action effectuée</div>';
}
else {
echo '<div class="error">Erreur détectée</div>';
}
Il est également possible d’écrire une condition if … else … sans les accolades quand il n’y a qu’une seule action.
Une condition sans accolade ne s’applique qu’à la première commande qui suit. Si vous effectuez deux actions après un if sans accolade et que la condition est fause, la seconde action sera tout de même effectuée.
<?php
$success = true;
if( $success )
echo '<div class="success">Action effectuée</div>';
else
echo '<div class="error">Erreur détectée</div>';
Une écriture ternaire est une condition simplifiée qui enregistre un résultat selon une condition réussie et une condition échouée.
Seulement, au lieu d’écrire if( condition ) { commande 1 } else { commande 2 }
, on va écrire $resultat = condition ? commande 1 : commande 2;
.
<?php
$success = true;
$class = $success ? 'success' : 'error';
$text = $success ? 'Action effectuée' : 'Erreur détectée';
echo "<div class=\"{$class}\">{$text}</div>";
Il est possible d’écrire du PHP (et donc des conditions) dans du code HTML.
Le HTML ne doit pas lui-même être dans une balise
<?php
. C’est l’inverse : il faut ouvrir une balise<?php
dans le HTML.Les conditions s’écrive dans les balises
<?php
alors que les résultats s’écrivent en dehors.
<?php
$success = true;
?>
<div class="<?php if($success) { echo 'success'; } else { echo 'error'; } ?>">
<?php if($success) { echo 'Action effectuée'; } else { echo 'Erreur détectée'; } ?>
</div>
Il existe une écrite plus simple à lire, pour faire la même chose, sans accolade, mais avec des :
.
<?php
$success = true;
?>
<div class="<?php if($success) : ?>success<?php else : ?>error<?php endif ?>">
<?php if($success) : ?>Action effectuée<?php else : ?>Erreur détectée'<?php endif ?>
</div>
Enfin, il est possible de mixer les écritures pour faire du ternaire dans le HTML. On s’en sert pour écrire des valeurs ou textes, pas du HTML complet.
<?php
$success = true;
?>
<div class="<?php echo $success ? 'success' : 'error'; ?>">
<?php echo $success ? 'Action effectuée' : 'Erreur détectée'; ?>
</div>
Il est possible de récupérer les données du navigateur avec la variable $_SERVER['HTTP_USER_AGENT']
.
<?php
echo $_SERVER['HTTP_USER_AGENT']
Exemple de résultat :
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.41 Safari/537.36
Grâce à cette variable, on peut retrouver plus informations sur le navigateur de l’utilisation, comme le nom et la version de ce dernier.
Remarquez que dans l’exemple ci-dessus, on peut « Chrome ». C’est ici que se trouve le nom du navigateur.
Pour extraire cette donnée, nous allons utiliser une regExp
avec la fonction preg_match
et des conditions.
La méthode pour le navigateur est la même.
$agent = $_SERVER['HTTP_USER_AGENT'];
if( preg_match( '/Firefox/i', $agent ) ) $navigateur = 'Firefox';
elseif( preg_match( '/Mac/i', $agent ) ) $navigateur = 'Mac';
elseif( preg_match( '/Chrome/i', $agent ) ) $navigateur = 'Chrome';
elseif( preg_match( '/Opera/i', $agent ) ) $navigateur = 'Opera';
elseif( preg_match( '/IE/i', $agent ) ) $navigateur = 'IE';
else $navigateur = 'Unknown';
echo "Navigateur : {$navigateur}."
Maintenant que nous savons comment détecter le navigateur, nous allons pouvoir afficher un encart en HTML sur le site pour inviter l’utilisateur à télécharger le plugin.
<section>
<h2>Un titre ici</h2>
<?php $agent = $_SERVER['HTTP_USER_AGENT']; ?>
<?php if( preg_match( '/Firefox/i', $agent ) ) : ?>
<div class="plugin">
<a href="#">Téléchagez notre plugin pour Firefox</a>
</div>
<?php elseif( preg_match( '/Chrome/i', $agent ) ) : ?>
<div class="plugin">
<a href="#">Téléchagez notre plugin pour Chrome</a>
</div>
<?php endif; ?>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</p>
</section>
Et voilà, le tour est joué.
Vous connaissez à présent plusieurs façons d’écrire des fonctions if … else … avec PHP et vous êtes également en mesure d’utiliser ces conditions pour afficher ou non du HTML.
En cas de problème avec vos conditions ou la compréhension de ces dernières, vous pouvez demander l’assistance d’un freelance spécialisé sur Codeur.com. Vous trouverez forcément un développeur PHP disponible pour répondre à votre besoin. Le temps de réponse est très rapide et en plus, le dépôt d’une annonce est gratuit.