Salut !
Aujourd'hui, nous allons voir une partie importante et non négligeable de PHP, c'est une des fondations d'un langage dynamique : Les conditions.
Qu'est-ce qu'une condition? Une condition sert lorsque nous voulons en quelque sorte tester nos données, lorsque nous voulons voir si elles respectent certains critères. On appelle cela "conditions" car, si nos données ne respectent pas les critères requis, le programme va éxécuter un morceau de code différent de celui qu'il éxecuterais si les critères requis étais respectés. Les données doivent donc respecter certaines conditions !
Pour créer une condition en PHP et dans d'autres langages, il y a des symboles à connaître : ceux-ci vous permettent de travailler avec vos données et de tester différentes propriétés :
| Symbôle |
Signification |
| == |
Est égal à |
| != |
Est différent de |
| < |
Est inférieur à |
| > |
Est supérieur à |
| <= |
Est inférieur ou égal à |
| >= |
Est supérieur ou égal à |
Attention ! Ne confondez pas "==" et "=", le premier signifie "Est égal à" et est utilisé dans les conditions et le second signifie "vaut" et est utilisé pour l'initialisation des variables !
En PHP, il existe deux types de conditions : le If .. Else et le switch, nous nous attarderons sur les deux conditions et essaierons d'en comprendre le fonctionnement !
If .. Else
Les anglophones ici présents auront -normalement- compris la signification de cette condition : Si .. Sinon. Je m'explique : la condition se divise en 2 blocs :
- Le premier, si la condition est remplie : c'est ce bloc qui est exécuté.
- Le second, si la condition n'est pas remplie : c'est ce bloc qui est exécuté.
Et comme un exemple vaut mieux que des mots, allons-y :
<?php
$compte_en_banque = 1600;
if($compte_en_banque == 1600){
echo "vous avez 1600€";
}
else{
echo "vous n'avez pas 1600€";
}
J'explique : la ligne if peut se traduire comme cela : "si $compte_en_banque est égal à 1600€, alors .." . Ici, $compte_en_banque vaut bien 1600€, c'est donc le bloc "if" qui est exécuté, le code affiche donc "vous avez 1600€". A l'inverse, si $compte_en_banque était différent de 1600€, il afficherait "vous n'avez pas 1600€".
Si vous n'avez pas compris, faites différents tests, changer la valeur de $compte_en_banque, vous verrez comment varie le message qui s'affiche !
Vous pouvez, maintenant, utiliser les différents symboles :
<?php
$compte_en_banque = 1650;
if($compte_en_banque <= 1600){
echo "vous avez moins de 1600€";
}
elseif($compte_en_banque >= 1600){
echo "vous avez 1600€ ou plus";
}
else{
echo "heuuu, tu as combien, au juste?";
}
Ici, deux nouveautés : tout d'abord, "elseif" : On utilise cette conditions lorsque on voudrait faire plusieurs if à la suite, c'est plus "propre" ! :)
ensuite, les symboles "<=" et ">=", qui signifie respectivement "inférieur ou égal à" et "supérieur ou égal à". On va "traduire" ce code : "Si compte en banque est inférieur ou égal à 1600, tu affiches "vous avez moins de 1600€", sinon si compte en banque est supérieur ou égal à 1600€, tu affiche "vous avez 1600€ ou plus" sinon, tu affiches "heuuu, tu as combien au juste?"". Comme vous avez vu, j'en ai profiter pour traduire le elseif en sinon si !
Ensuite, on peut aussir tester une variable pour voir si elle est vide (et définie par la même occasion ! ):
$t = "1";
if(emtpy($t)){
echo 'la variable t ne contient rien";
}else{
echo $t;
}
le mot clef "empty" nous permet de tester la présence de la variable et si elle est remplie ! Si vous aviez voulu tester le fait qu'elle soit bien initialiser, vous auriez fait comme cela :
$t = 1;
if(!empty($t)){
echo $t;
}else{
echo " t est vide";
}
Le "!" devant empty signifie "différent" et on l'utilise dans ce type de cas !
Enfin, nous allons voir que l'on peut combiner des conditions ou en "ouIfier" certaines (vous comprendrez, vous verrez ^^ ) :
</pre>
$compte_en_banque = $cb = 15000;
if($cb >= 1200 AND $cb <= 20000){
echo " vous avez entre 1200 et 20000€";
}
else{
echo "vous avez .. autres chose ! ";
}
Nous avons donc combiner deux conditions ici : "si $cb est supérieur ou égal à 1200 et inférieur ou égal à 20000€". 0 savoir que nous aurions pu remplacer AND par && !
$cb = 12;
$cb2 = 15000;
if($cb >= 1500 OR $cb2 >= 1500){
echo " vous avez plus de 1500€ sur au moins un compte ! ";
}
else{
echo "vous avez moins de 1500€";
}
Nous avons ouIfier une condition : "Si cb est supérieur ou égal à 1500 OU cb2 est supérieur ou égal à 1500€". Tout comme pour AND, OU aurait pu être changer par || (altGr+6 sous windows deux fois ! ).
Je crois que pour la condition if .. ele, c'est bon ! On passe à la prochaine ! :)
Switch
La condition switch est, à quelque chose près, un concentré de if /elseif avec un else ! je m'explique : Imaginez, vous voulez quantifier la richesse d'une personne (l'argent présent sur son compte en banque est stocké dans la variable $compte_en_banque) de façon a la mettre dans 8 catégories : à la rue, a la dure, pas facile, moyen, joli, pactole, millionnaire, milliardaire. Avec un if/elseif, il faudrait faire ça :
</pre>
<?php
$compte_en_banque = $cb = 15000;
if($cb == 0){
echo "à la rue";
}
elseif($cb ==100){
echo "à la dure"
}
elseif($cb == 500){
echo "pas facile";
}
elseif($cb == 1500){
echo "moyen";
}
elseif($cb== 2500){
echo "joli";
}
elseif($cb== 5000){
echo "pactole";
}
elseif($cb == 1000000 ){
echo "Millionnaireé;
}
elseif($cb == 1000000000){
echo "milliardaire";
}
else{
echo "problème ! ";
}
J'ai mal à la main. Ecrire toutes ces conditions est .. barbant, répétitif et j'en passe ! PHP à donc intégré un système qui nous facilite un peu la tache, switch :
<?php
$cb = 1500;
switch($cb){
case 0:
echo "à la rue";
break;
case 100:
echo "à la dure";
break;
// ...
cas 1000000000:
echo "Milliardaire";
break;
default:
echo "problème";
}
explications : switch($cb) nous permet à la fois d'initialiser la condition et de lui donner la variable sur laquelle nous allons travailler(ici, $cb). Ensuite, nous avons le "bloc" de condition :
case 0: => Dans le cas ou $cb est égal à 0
Echo "à la rue"; => on affiche "à la rue"
break; => On termine l'instruction.
et ainsi de suite !
enfin, default: => Equivalent du else
echo "problème" => Ce qui est affiché quand rien ne correspond.
Ici, dans notre cas, cette condition afficherait : "moyen".
Voilà pour switch ! Passons au boléen (eh oui, il y a une surprise :p )
Les boléens
Les boléens sont des variables .. spéciales, en effet, elle ne peuvent prendre que deux valeurs : true ou false , et, pour les utiliser dans les conditions, il y a quelques subtilitées toujours utiles à savoir !
allez, l'exemple de ce qui nous paraitrait "logique" au premier abord :
<?php
$b = true; // C'est un boléen
if($b == "true" ){
echo "bouh";
}else{
echo "aaah";
}
Voilà un exemple tout bête, avec des messages d'erreurs ou de réussites tout aussi bêtes ;)
Maintenant, je vais vous montrer deux "techniques" qui marchent avec les boléens (je ne montre que le if)
$b = true;
if($b == true) //Sans guillemets, ça marche !
if($b)//Sans rien, ça marche !
Je vous explique rapidement :
- Dans le premier cas, true n'est pas considéré comme une chaîne de caractères, mais une entité à part entière : pas besoin de guillemets !
- Dans le second cas, la condition équivalente est "if($b == true)", tout simplement ! :)
Et voilà, c'est fini pour le cours !
TP
Nous reprenons le même code que le précédent TP (prenez la correction si vous ne l'avez pas fait et que vous ne voulez pas le faire ! )
L'utilisateur va rentrer donc une date de naissance (utilisez la technique des 3 champs, ce sera la seule manière de laquelle vous pourrez réaliser ce TP), vous devrez, si il a plus de 36 ans, qu'il est né un jour supérieur au 13 et à un mois supérieur ou égal à Avril, lui afficher un message lui affichant qu'il à gagner un gros lot !
Vous aurez besoin de tout ce que l'on a vu au tp d'avant et au conditions if..else et au mot clef AND (je vous aide trop là !!)
Bonne chance et à dans deux jours !!