NoShade.net est en vente — Contactez nous si vous êtes intéressé
Le siteTutoriauxInterviews
icone RSS NoShade.net

Accueil » Tutoriaux » PHP » Chapitre 2.3 : Les conditions

Les tutoriaux Php

2.3 - Les conditions

if, elseif et else

Bien, nous allons maintenant nous attaquer aux conditions.
N'allez pas chercher là un nom bizarre qui ne veut pas dire ce que l'on pense, il s'agit bel et bien de conditions "si", "sinon, si" et "sinon". :)

Là, bien entendu, nous allons pas écrire du php en Français, ces thermes se traduisent donc ainsi en anglais :

if = Si
elseif = Sinon, si / autrement, si
else = Sinon / autrement

Alors, que faire avec ça ?
Les conditions vont nous permettre de créer diverses actions en fonction de plusieurs choses :
- On peut afficher une erreur au visiteur si celui-ci n'a pas rempli tous les champs d'un formulaire,
- On peut afficher un contenu différent selon l'heure de la journée, ou la saison de l'année,
- On peut aussi trier une liste selon le choix du visiteur, ...

Nous n'avons pas encore assez avancé dans le cours pour bien vous parler de ces actions possibles, nous allons donc créer des exemples simples pour débuter, et éviter de trop y aller d'un coup, mais sachez que les possibilités qu'offrent les conditions sont quasi infinies, c'est tout simplement quelque chose de génial! :)

Nous allons continuer d'utiliser les variables, que vous avez apprises dans le chapitre précédent.

Nous allons définir une variable $couleur dont la valeur sera "bleue".
Nous créerons ensuite des conditions pour dire :
- Si la couleur est rouge, on affichera "J'aime bien le rouge",
- Si la couleur est vert, on affichera "Oui, le vert, c'est pas mal!",
- Si la couleur est bleue, on affichera "Je préfère le rouge au bleu",
- Si la couleur n'est aucune des deux, on affichera "A ton avis, quelle est ma couleur préférée?".

Une fois notre code en place, on en vérifiera le bon fonctionnement, tout simplement en changeant la valeur de la variable $couleur. :)

<?php
    $couleur 
'bleu'// On définit une couleur dans cette variable

    
if ($couleur == 'rouge'// Si la couleur est le rouge
    
{
        echo 
"J'aime bien le rouge"// Alors on affiche "J'aime bien le rouge'
    
}
    elseif (
$couleur == 'vert') // Sinon, si la couleur est le vert
    
{
        echo
"Oui, le vert, c'est pas mal!"; // Alors on affiche "Oui, le vert, c'est pas mal!"
    
}
    elseif (
$couleur == 'bleu') // Sinon, si la couleur est le bleu
    
{
        echo
"Je préfère le rouge au bleu"; // Alors on affiche "Je préfère le rouge au bleu"
    
}
    else
// Sinon (si la couleur n'est ni le rouge, ni le vert, ni le bleu)
    
{
        echo
"A ton avis, quelle est ma couleur préférée?"; // On demande de choisir une couleur
    
}
?>

C'est compliqué? Non, quand même!? :D
Bon, un peu d'explications s'imposent, malgré que ce code soit déjà commenté. :)

Nous commençons donc par définir une variable $couleur, dont la valeur est "bleu".
Ensuite, on attaque les conditions. Dans cet exemple, nous voulons afficher une phrase différente selon le contenu de la variable $couleur.
On écrit donc if ($couleur == 'rouge'), suivi de deux accolades, qui contiendront le résultat à afficher, si la variable $couleur est bel et bien le rouge.

Certains doivent déjà se questionner, à propos des signes ( == ).
Pour déclarer nos variables, nous n'avons eu qu'à écrire un seul signe ( = ), alors pourquoi dans les conditions, on doit en écrire deux? :-O

Les signes de comparaison

Une des utilités des conditions, est de pouvoir comparer des données.
Dans l'exemple que nous avons utilisé précédemment, nous avons comparé la valeur d'une variable ($couleur), avec des résultats pré-définis (le rouge, le vert et le bleu).

Mais sachez que l'on peut faire bien plus!
Nous allons, en plus du signe ( == ), en apprendre d'autres, tous aussi utiles les uns que les autres! :)

== | Égal à
!= | Différent de
> | Suppérieur à
< | Inférieur à
>= | Supérieur ou égal à
<= | Inférieur ou égal à

Nous allons, pour illustrer l'utilisation de ces signes, créer un autre script d'exemple.
Dans ce cas, on ne pourra bien entendu pas comparer des couleurs "bleu" ou "rouge", mais l'utilisation de chiffres y sera plus adaptée.

<?php
    $compte_en_banque 
320// Nombre d'euros sur le compte en banque du client

    
if ($compte_en_banque >= 1000000// Si le client a plus d'un million d'euros
    
{
    echo 
'Vous etes milliardaire!';
    }
    elseif (
$compte_en_banque >= 1000// Si le client a plus de mille euros
    
{
    echo 
'Vous etes millionnaire!';
    }
    elseif (
$compte_en_banque 0// Si le client est à découvert
    
{
    echo 
'Vous etes à découvert!';
    }
    else
    {
    echo 
"Vous disposez de $compte_en_banque euros";
    }
?>

Essayez de changer la variable $compte_en_banque, par exemple :
$compte_en_banque = 12098630;
$compte_en_banque = 1278;
$compte_en_banque = 130;
$compte_en_banque = -146;

Petit rappel du chapitre sur les variables :
La valeur d'une variable contenant un chiffre ou un nombre n'a pas besoin d'être entourée de guillemets ou d'apostrophes. Il en est de même pour les conditions.
Si vous comparez des noms d'animaux (chien et chat), qui ne sont pas des nombres, vous devrez les entourer de guillemets ou apostrophes, mais si vous comparez des nombres, vous n'en êtes pas obligés.
J'ai bien dit "vous n'en êtes pas obligés", ce qui veut dire que vous pouvez tout à fait utiliser des guillemets pour traiter des chiffres! :)

Ou bien (OR)

Nous allons maintenant, en plus de parler de la condition != (Différent de), aborder les mots clefs OR et AND, que nous verrons juste après.

Dans l'exemple qui va suivre, nous voulons afficher une phrase différente en fonction du pays choisi dans la variable $pays.

<?php
    $pays 
'Suisse';

    if (
$pays != 'France'// Si le pays n'est pas la France
    
{
        echo 
"Tu n'habite pas en France";
        if (
$pays == 'Espagne' OR $pays == 'Italie' OR $pays == 'Suisse' OR $pays == 'Allemagne' OR $pays == 'Luxembourg' OR $pays == 'Belgique')
        { 
// Si le pays est Espagne OU Italie OU Suisse OU Allemagne OU Luxembourg OU Belgique
        
echo ", mais dans un pays frontalier qui est : $pays";
        }
        else { }
    }
    else
    {
        echo 
"Tu habite en France";
    }
?>

Papayouhh!!! ! :-O
Là, ça en fait du bazard, non? :D
Bon, un peu d'explications...
Tout d'abord, on crée une condition pour savoir si le pays est la France ou non.
Si ce n'est pas la France, on écrit "Tu n'habite pas en France", et on enchaîne sur une deuxième condition, à l'intérieur de cette première condition donc!
Cette seconde condition, elle, va vérifier si le pays donné dans la variable $pays est un pays frontalier à la France. Dans un tel cas, il affichera à la suite de la phrase "Tu n'habite pas en France" > ", mais dans un pays frontalier qui est : $pays".
Dans notre exemple donc, PHP retournera :

Tu n'habite pas en France, mais dans un pays frontalier qui est : Suisse

Récapitulons donc, il y en a pour tous les goûts! :)
- Si le pays est "France", PHP retournera "Tu habite en France".
- Si le pays n'est pas la France, mais un pays frontalier à la France, PHP retournera "Tu n'habite pas en France, mais dans un pays frontalier qui est : Le nom du pays".
- Si le pays est tout autre, par exemple l'Inde ou la Hongrie, PHP retournera juste "Tu n'habite pas en France".

Intéressant tout ça, non? :)

Nous verrons dans un chapitre prochain comment créer un formulaire pour que le visiteur puisse choisir lui même un pays parmi une liste dans un menu déroulant par exemple! ;)
Mais patience, chaque choses en son temps! :D

Pour cet exercice, je vous suggère deux choses, pour que vous pratiquiez, et que vous comprenez un peu mieux tout ça.
Déjà, amusez vous à changer la valeur de la variable $pays, pour en voir ce qu'il en résulte.
Ensuite, essayez d'améliorer ce script, pour, par exemple, afficher "Tu n'habite pas en France, mais dans un pays frontalier qui est : Belgique. Ce pays fait partie de l'Union Européenne.".

Pour ne pas vous embêter à chercher la liste des pays de l'Union Européenne sur Google, en voici la liste (hé oui, vous n'avez pas d'excuse pour y échapper :P) :
Allemagne - Autriche - Belgique - Chypre - Danemark - Espagne - Estonie - Finlande - France - Grèce - Hongrie - Irlande - Italie - Lettonie - Lituanie - Luxembourg - Malte - Pays-Bas - Pologne - Portugal - République Tchèque - Royaume-uni - Slovaquie - Slovenie - Suède

Hé ouais, ça en fait des "OR $pays ==" hein? Mais c'est pourtant important de vérifier que vous ayez bien compris ce que nous avons appris jusque là, c'est pourquoi je vous recommande vivement de faire cet exercice! :)

Et puis (AND)

Parlons maintenant brièvement du mot clef AND, qui s'applique comme le OR dans nos conditions.

Avec AND, nous allons pouvoir vérifier par exemple le contenu de deux variables, dans une seule condition.
Imaginons un script pour protéger l'accès à une page par login/mot de passe.
Hormis le fait que nous n'ayons pas encore appris comment utiliser le contenu d'un formulaire dans nos scripts (patience, ça arrive!), vous allez voir que le principe est bien simple, même si en réalité, tous les sites web ont un script un peu plus complexe que cela, pour sécuriser un peu leur code... nous n'en sommes pas là, voyons donc ce petit script ensemble :

<?php
$login 
'Darou'// Le login rentré est Darou
$pass 'Kramounia'// Et le mot de passe Kramounia
// Ne me demandez pas oû j'ai pêché ces noms bizards...

// Si le login est Darou ET le mot de passe Kramounia
if ($login == 'Darou' AND $pass == 'Kramounia')
    {
    echo 
'Accès autorisé, bienvenue!!'// Alors l'accès est autorisé
    
}
else
    {
    echo 
'Accès refusé, login et/ou mot de passe incorrect(s)!'// Sinon il est refusé
    
}
?>

Si vous aviez bien compris l'exemple du mot OR, vous ne devriez pas avoir de mal avec le mot AND! ;)

Pour vous entraîner, essayez par exemple :
- D'ajouter un deuxième mot de passe pour le compte Darou (hé oui, il hésite toujours entre Kramounia et Bogchtagravédé notre p'tit Darou)
- D'ajouter un elseif pour ajouter un deuxième accès pour un membre (autre login et password, donc).

C'est pas bien dur, faites-le, et on se retrouve juste après pour la suite! :)

Le mot clef AND peut également se notter &&
Et le mot clef OR peut aussi se notter ||

Pas si NULL que ça...

Abordons maintenant la possibilité de tester la contenance de nos variables.

Nous souhaiterions par exemple, voir si une variable $prenom a bien été remplie ou non par le visiteur. Comme je vous le disais précédemment, nous verrons comment faire cela avec un formulaire plus tard, après le chapitre sur la concaténation.

Nous testerons donc notre script comme précédemment, avec une variable toute faite.

Écrivons un petit script, assez simple, qui nous servira de base :

<?php
$prenom 
''// La variable $prenom ne contient rien

if ($prenom == ''// Si la variable $prenom ne contient rien
    
{
    echo 
"Erreur : Tu n'a pas donné ton prénom";
    }
else
    {
    echo 
"Salut $prenom";
    }
?>

Ce script marche. PHP en retournera :

Erreur : Tu n'a pas donné ton prénom

Mais il n'est pas très juste.
Dans les faits, on peut traiter ce type de cas (une variable vide), principalement par deux méthodes :
- Avec le mot clef "NULL", qui veut se traduirait en PHP par "vide",
- Avec les booléennes, que nous verrons ensuite.

Reprenons notre script, mais en utilisant le mot clef NULL.

<?php
$prenom 
'';

if (
$prenom == NULL// Si la variable $prenom est vide
    
{
    echo 
"Erreur : Tu n'a pas donné ton prénom";
    }
else
    {
    echo 
"Salut $prenom";
    }
?>

C'est déjà plus correct! :)
On peut également l'écrire d'une autre manière, en inversant nos conditions :

<?php
$prenom 
'';

if (
$prenom != NULL// Si la variable $prenom n'est pas vide
    
{
    echo 
"Salut $prenom";
    }
else 
// Sinon, c'est qu'elle est vide, on affiche donc l'erreur
    
{
    echo 
"Erreur : Tu n'a pas donné ton prénom";
    }
?>

Ces trois derniers scripts que nous avons vus affichent donc tous les trois la même chose au final! :)
Cependant, les deux derniers sont un peu plus recommandables. Utilisez l'un ou l'autre selon vos besoins, tout simplement!

is...set?

Après avoir testé la contenance de nos variables, nous allons voir comment faire pour détecter l'existence d'une variable.
Cette technique toute simple à mettre en oeuvre, et qui nous sera très utile pour créer des scripts un peu plus avancés, s'appelle une fonction.
Nous reviendrons d'ailleurs sur les fonctions dans un chapitre.

Plutôt que de bla-blatter, voyons ensemble un exemple d'utilisation de la fonction isset()

<?php
$civilite 
'Mr.';
$nom 'Druhlulu';
$prenom 'Jimmy';
$adresse '24, rue de Paris';
$code_postal '12345';
$ville 'Boomville';

if(isset(
$civilite) AND isset($nom) AND isset($prenom) AND isset($adresse) AND isset($code_postal) AND isset($ville))
{
    echo 
'Bonjour ' $civilite ' ' $nom ' ' $prenom '.<br />';
    
    if(isset(
$confirmation_payement))
    {
        echo 
'Votre commande N° ' $numero_commande ' vous sera expédiée à l\'adresse suivante :<br />';
        echo 
$civilite ' ' $nom ' ' $prenom '<br />';
        echo 
$adresse '<br />';
        echo 
$code_postal ' ' $ville '<br />';
        echo 
'Nous vous remercions pour votre confiance et vous disons à bientôt sur Sitedachat.com<br />';
        echo 
'L\'équipe du Sitedachat.com<br />';
    }
    else
    {
        echo 
'Désolé, votre commande n\'a pas été confirmée.';
    }
}
else
{
echo 
'Erreur : Vous n\'avez pas à etre ici en fait...';
}
?>

Pfiou! Y'a quelques lignes là!

Hé oui, mais il va falloir vous y habituer, on va commencer à écrire des choses un peu plus complexes maintenant! :)

Alors, dans ce script, nous avons :
- 6 variables, définissant la civilité (Mr. Mme. Mlle.), le nom, prénom, l'adresse, le code postal et la ville d'un client du site fictif "Sitedachat.com",
- Une première condition, vérifiant l'existence de ces 6 même variables,
- Si cette condition est passée, on affichera "Bonjour Mr. Druhlulu Jimmy.", sinon, on affichera une erreur "Vous n'avez pas à être ici en fait...",
- À l'intérieur de cette condition, une deuxième condition, vérifiant l'existence d'une variable $confirmation_payement.
Cette variable n'étant effectivement pas déclarée, on "saute" la condition "if(isset($confirmation_payement))" pour arriver à son "sinon" en PHP : else
Nous rajoutons ainsi une seconde ligne "Désolé, votre commande n'a pas été confirmée."

Nous n'en avons pas parlé avant, mais vous aurez remarqué la présence de retours lignes ( <br /> ) à la fin de nos différentes phrases.
Puisque PHP va "écrire" ces phrases, nous pouvons donc les mettre directement en forme.
Si l'on utilise des CSS, on peut donc très bien, par exemple, écrire des <p class="texterouge">, placer des <div id="bloc"> ou écrire des balises de liens ou images dans notre code... :)

Avant de passer au chapitre suivant, je vous demanderais tout de même de tester ce script.
Le but, sera donc de faire écrire à PHP le texte suivant :

Bonjour Mr. Druhlulu Jimmy.
Votre commande N° AFF876-C vous sera expédiée à l'adresse suivante :
Mr. Druhlulu Jimmy
24, rue de Paris
12345 Boomville
Nous vous remercions pour votre confiance et vous disons à bientôt sur Sitedachat.com
L'équipe du Sitedachat.com

Autant ne pas vous cacher que, si vous n'arrivez pas à faire afficher ce résultat, vous n'avez pas encore bien tout compris ce que nous avons vus jusque maintenant. Je ne saurais donc que vous conseiller de relire les parties de cours sur les variables, les conditions et la fonction isset. ;)

Bon, maintenant, nous allons voir un dernier point bien important, avant d'attaquer l'écriture de scripts un peu plus utiles! :)
Allez vous cherchez un verre, et continuons!

Par : Legibe & Vinchz, le 5 septembre 2006

Sommaire du cours PHP

» Sommaire
» 1.1 Avant propos
» 1.2 Que faut'il pour faire du php?
» 2.1 Écrire du texte en PHP
» 2.2 Les commentaires, les variables et les calculs
» 2.3 Les conditions
» 2.4 La concaténation + Évaluation
» 3.1 Transmission de données
» 3.2 Les fonctions + Dates et heures
» 3.3 Les Arrays (tableaux) + les boucles
» 4.1 Les bases de données
» 4.2 Lecture dans une BDD
» 4.3 Enregistrer dans une BDD
» 4.4 Modifier le contenu d'une table
» 4.5 Supprimer du contenu dans une BDD
» 4.6 Statistiques
» 5.1 Les sessions et cookies
» 5.2 Exercice : Un système de login multi-membres