Accueil » Articles » Développez des sites web dynamiques avec PhP et MySQL [Tuto en cours]

Développez des sites web dynamiques avec PhP et MySQL [Tuto en cours]

LES CONDITIONS EN PHP

Définition et utilité des conditions

On utilise les conditions pour pouvoir effectuer différentes actions et exécuter des blocs de code différents selon le contexte.

Par exemple, on va utiliser les conditions pour afficher « bonjour Monsieur » si l’un de vos visiteurs a indiqué qu’il était un homme ou « bonjour Madame » si un autre a indiqué qu’elle était une femme.

En PhP, cela se traduira par la forme suivante : « si la condition est remplie, alors exécuter ce code ». Ne mystifiez pas trop cela, car c’est en fait très simple !

Vous l’aurez donc compris : les conditions vont être un passage incontournable pour rendre votre site dynamique puisqu’elles permettent d’afficher des choses différentes en fonction du contexte et de vos utilisateurs.

En PhP, nous disposons des conditions suivantes :

  • La condition « if » ;
  • La condition « if…else » ;
  • La condition « if…elseif…else » ;
  • Le switch.

Nous allons voir dans ce chapitre à quoi correspondent chacune de ces conditions, quand et comment les utiliser.

Les symboles de comparaison

Pour utiliser les conditions, nous allons déjà avoir besoin de connaître les différents symboles de comparaison.

Les symboles de comparaison sont les suivants :

symboles de comparaison utilises en php pour les conditions

Encore une fois, pensez bien que le code n’est pas un langage venu d’une autre planète et que la logique est très souvent identique à celle de la vie de tout les jours.

Par exemple, voici une condition dans la vie de tous les jours : si je me lève avant 10h demain, j’irai faire les courses. En PhP, on traduira ça de la manière suivante :
« si (heure du lever < 10), alors exécuter « aller faire les courses ». » On pourrait également penser à une autre condition du type « si mon professeur est malade demain, alors je n’irai pas en cours ». Cela va se traduire par : « si (prof malade == vrai), alors exécuter « ne pas aller en cours ». » Comme vous le voyez, il ne faut pas vous formaliser sur certains mots qui peuvent paraître obscurs à la base ni essayer de leur donner des définitions surréalistes : il suffit souvent de penser « normalement ». Notez bien qu’on utilise un double égal pour les conditions, à ne pas confondre avec le simple égal que l’on a utilisé avec les variables.

La structure if

La structure ou condition « if » (qui veut dire « si » en français) est utilisée pour exécuter du code seulement si une condition donnée est vraie.

Par exemple, on pourrait afficher un message du type « passez une bonne journée » à nos visiteurs seulement si nos visiteurs se connectent avant 18h.

Voici comment cela se traduirait en PhP :

la bounce if en php

fonctionnement de la boucle if en php

Plusieurs remarques sur le code ci-dessus. Tout d’abord, vous remarquez que l’on applique notre condition sur une variable. Ce sera quasiment toujours le cas et, pour cause : le propre d’une variable est de pouvoir varier, ce qui est parfait pour nos conditions.

Ici, nous avons fixé la variable comme étant égale à 17 pour l’exemple, mais il est évident que dans la réalité nous utiliserons des fonctions afin que la valeur de la variable change selon l’heure actuelle.

Ensuite, regardez bien la structure de notre première condition et commencez à la retenir car ce sera toujours la même :

  1. Tout d’abord, on déclare une variable
  2. Ensuite, on utilise le « if » et l’on met notre condition entre parenthèses
  3. Enfin, on écrit le code à exécuter si la condition est vérifiée entre accolades

La structure if…else

Reprenons notre exemple précédent et imaginons que nous voulions maintenant également afficher un message (différent) pour les visiteurs se connectant après 18h, en leur souhaitant bonne soirée par exemple.

On pourrait utiliser deux structures de type « if » mais cela serait vraiment lourd et peu élégant.

C’est pour cela que nous allons utiliser une nouvelle structure, la structure « if…else », signifiant « si…sinon ».

Cette nouvelle structure va nous permettre d’exécuter un code si notre condition est vérifiée ou d’exécuter un autre code si celle-ci n’est pas vérifiée.

Voyons immédiatement comment ça fonctionne en pratique :

fonctionnement de la boucle if... else en php

demonstration boucle if... else en php

Que nous dit le bout de code précédent ? C’est très simple : si le visiteur se connecte avant 18h, on lui affichera le message « passez une bonne journée ». Dans tous les autres cas (c’est à dire si le visiteur se connecte après 18h), on lui affichera « Bonne soirée ! ».

Retenez qu’il ne faut jamais mettre de condition dans un else (on n’écrira jamais par exemple else($heure_connexion>18), sinon votre code ne fonctionnera pas.

Voilà pour le niveau un. Passons maintenant à des choses plus intéressantes. Jusqu’à présent, nous nous sommes contentés d’afficher un message selon que la condition soit vérifiée ou pas.

Mais rien ne nous empêche d’utiliser des variables dans nos conditions et de leur affecter telle ou telle valeur selon que la condition soit vérifiée ou pas.

Reprenons une nouvelle fois notre exemple précédent :

on stocke une valeur dans une variable selon condition verifiee en php

démonstration stockage valeur dans une variable avec une condition if else en php

Ce nouveau code affecte une valeur « oui » ou « non » à la variable journée. En l’état, cela ne sert pas à grand chose mais cette nouvelle variable pourrait nous servir pour d’autres calculs par la suite par exemple.

La structure if…elseif…else

Cette nouvelle structure est encore plus complète que if…else puisqu’elle nous permet de gérer autant de cas que l’on souhaite. Elle signifie littéralement « si…sinon si… sinon ».

Changeons d’exemple et imaginons que nous souhaitions afficher un message différent selon la note obtenu par des élèves à un examen comme ceci :

  1. Si l’étudiant a eu moins de 10, on affiche « vous n’avez pas eu la moyenne »
  2. Si l’étudiant a eu 10, on affiche « vous avez juste la moyenne »
  3. Si l’étudiant a eu une note supérieure à 10, on affiche « vous avez eu plus de la moyenne »

On pourrait faire cela en imbriquant deux « if…else » mais je ne vous le recommande vraiment pas, pour des raisons de performance et de clarté.

A la place, utilisons plutôt une structure if…elseif…else qui nous permet de gérer plus de deux cas. En reprenant notre exemple, cela donne :

fonctionnement boucle if else if else en php

demonstration du fonctionnement de la boucle if else if else en php

Tester plusieurs conditions à la fois

Reprenons notre exemple précédent et imaginons que l’on souhaite maintenant donner une appréciation selon deux critères : la note et le niveau de difficulté du contrôle.

On donnera donc une appréciation différente selon que l’étudiant ait eu plus ou moins de 12 et selon que le contrôle soit facile ou difficile.

Il va donc nous falloir tester plusieurs conditions d’un coup. Pour cela, nous allons avoir besoin de deux nouveaux mots clefs : AND (pour « et ») et OR (pour « ou »).

AND peut aussi être écrit avec le symbole suivant : && tandis qu’on peut écrire OR de cette façon : ||.

Je vous conseille de plutôt utiliser le mot clef que le symbole pour plus de lisibilité.

Appliquons cela immédiatement à notre exemple :

on peut tester plusieurs conditions a la fois en PhP

le rendu suite au test de plusieurs conditions a la fois en PhP

Le switch

Dans certains cas, vous aurez beaucoup d’issues possibles, c’est à dire beaucoup de résultats différents possibles suite à votre condition.

Imaginons que l’on veuille donner afficher un commentaire différent pour chaque note obtenue par nos élèves. On peut certes toujours utiliser une structure de type if…elseif…else mais cela va être très long et un peu lourd.

Pour ce genre de situations, nous avons à notre disposition une autre structure, un peu plus rapide et plus lisible : le switch.

Comparons les deux méthodes, pour un même exemple (je n’écrirai que le code PhP pour cet exemple pour pouvoir zoomer suffisamment pour plus de visibilité pour vous) :

utiliser le switch en php

Quelques petites explications sur l’utilisation du switch s’imposent je pense. Tout d’abord, vous remarquez une structure différente de ce qu’on a pu voir avec les structures de type if…elseif…else.

On switch sur la variable $note. Pour le switch, nous n’avons qu’un couple d’accolades, mais nous avons des « case », un « break » pour chaque « case » et un « default ».

« Default » est l’équivalent du else : c’est le cas par défaut, c’est-à-dire ce qui s’affiche si la valeur entrée par l’utilisateur ne correspond à aucun cas prévu.

Case signifie « cas ». Il faut lire « dans le cas où la note est égale à 0, j’exécute ce code ; dans le cas où la note est égale à 4, j’exécute ce code, etc. ». Pensez bien à mettre les deux points derrière chaque case.

Enfin, le break sert à arrêter l’instruction et à sortir du switch si PhP a rencontré le bon cas. Sans le break, tout les cas seraient lus ! Vous pouvez essayer d’enlever les break, vous allez voir que le résultat est loin d’être optimal.

Une limitation du switch cependant : il ne peut tester que l’égalité. Faites bien attention à cela !

Encore une fois, utiliser if…elseif…else vous amènera exactement au même résultat qu’avec switch ; tout est question de préférence et de lisibilité. Pour le moment, je vous conseille de vous entraîner avec tous les outils que je vous donne avant de faire un choix définitif.

Deux astuces pour mieux utiliser vos conditions

Maintenant que vous savez tout ou presque sur les conditions, je peux vous révéler deux astuces qui d’une par vont alléger votre code et d’autre part vont vous simplifier la vie.

La première est en rapport avec l’utilisation des variables de type booléen. Vous vous rappelez ? Ces variables prennent soit la valeur « true », soit la valeur « false ».

Testons par exemple si vos visiteurs sont étudiants ou pas. Avec vos connaissances actuelles, vous devriez écrire quelque chose comme cela :

première façon d ecrire des booleens en php

Il est possible de faire plus court. En effet, lorsque vous affectez une valeur « true » à une variable, PhP sait très bien que vous travaillez avec des booléens.

Vous n’avez donc pas besoin de le répéter dans votre condition ; votre code s’exécutera aussi bien. Voyez plutôt l’écriture suivante :

deuxième façon pour utiliser les booleens dans les conditions en PhP

Les deux écritures ci-dessus sont strictement équivalentes. Cependant, la seconde est plus rapide à écrire et est en fait plus lisible pour tous les développeurs qui ont un certain background. Je vous encourage donc à utiliser cette deuxième méthode.

Le seul inconvénient de cette méthode est que l’on ne peut pas à priori tester si un booléen vaut « false ». Attention j’ai bien dit à priori !

Il existe en fait un symbole qui permet de tester si la variable vaut false, c’est le point d’exclamation. Voici comment on écrit cela :

tester que un booléen vaut false dans une boucle en PhP

on peut tester que un booleen vaut false dans une boucle en PhP en utilisant !

Voilà pour la première astuce pour optimiser vos conditions. La seconde, que je vais vous présenter maintenant, devrait beaucoup vous simplifier la vie si vous avez beaucoup de texte à afficher en réponse à une condition.

Regardez les deux codes ci-dessous. Ces derniers produisent exactement le même résultat :

façon classique pour ecrire une boucle en php

ecrire du HTML a interieur boucle PhP en fermant le tag PhP et en le reouvrant

Comme vous pouvez le voir, dans ce second cas, on a fermé la balise PhP avant d’écrire le texte à afficher, ce qui nous permet d’écrire ce texte directement en HTML. Ensuite, nous avons ré-ouvert une seconde balise PhP pour y inclure l’accolade fermante.

Alors quel intérêt me direz-vous ? Ca semble plus compliqué et ça produit le même résultat. Certes, mais imaginez que vous ayez beaucoup de texte à afficher avec des apostrophes ou des guillemets.

Si vous aviez écrit le code à afficher à l’intérieur de la balise PhP, il aurait fallu échapper chacun de ces apostrophes ou guillemets avec des antislash, chose que l’on n’a pas besoin de faire avec cette deuxième façon d’écrire.

Condenser ses conditions : les formes ternaires

Il est possible de condenser encore plus vos conditions en utilisant ce qu’on appelle les structures ternaires.

Les structures ternaires vont, sur une même ligne, à la fois tester une variable dans une condition et affecter une valeur à une autre variable selon que la condition soit vérifiée ou non.

Voyons immédiatement en pratique comment les ternaires fonctionnent.

Imaginons que l’on teste l’âge de nos visiteurs et que, selon qu’ils aient plus ou moins de 18 ans, on leur autorise ou interdise l’entrée à notre site (on ne va évidemment pas encore créer tout le système d’autorisation / interdiction d’entrée ; il faut l’imaginer).

Pour faire cela, jusqu’à présent, on aurait écrit quelque chose comme ça :

utilisation des structures ternaires en php

En utilisant la forme ternaire, on peut condenser le code ci-dessus sous la forme suivante :

demonstration des structures ternaires en PhP

Que se passe t-il dans le code ci-dessus ?

Le test se fait sur la variable $age : on teste si sa valeur est supérieure à 18 ou pas.

Si elle l’est, on affecte à la variable $entree la valeur avant les deux points (c’est-à-dire « true »). Dans le cas contraire, on lui affecte la valeur après les deux points, c’est-à-dire « false ».

16 commentaires

  1. abdelmalek derouich

    merci infiniment pour ces cours, j’été vraiment nul et maintenant je commence à n’avancer dans la création des sites WEB en utilisant le HTML, le CSS et le PHP et c’est grâce à vos cours minutieusement expliqués.

  2. bonjours ,je suis encore un petit peux débutant dans le codage , j’aimerais faire une page d’inscription et une de connexion en php et mysql je dispose d’une base de donnée . merci d’avance pour votre aide .
    ps : j’adore vos vidéo =)

  3. Bocomba William Edouard

    bonjour,

    je suis William un de vos disciple Abidjan. En lisant le code source du site pierre-girraud.fr j’ai constater un bon nombre de balise link et de balise meta. Et je me pose la question de savoir a quoi elle servent? Par ailleurs je suis impatient de savourer la suite du cour sur php et mysql. Merci d’avance et surtout merci pour tout.

    Amicalement

    William

  4. Bonjour,

    Je te remercie de tout mon cœur Pierre!
    Tu consacre ton temps à partager des choses meilleures.
    Je suis débutant mais je croix de devenir pro, tes tutos sont claires et faciles à comprendre.
    Merci infiniement

  5. Salut, c’est vraiment génial ce que tu fais mais j’ai encore un problème, je n’arrive pas a créer un formulaire pour envoyer un mail ou pouvoir communiquez avec moi (pas un bloc mais vraiment une page de contact).
    Merci de bien vouloir m’aider…

    • Bonjour,

      J’explique déjà tout cela dans mes cours HTML / CSS et PhP… Je ne peux donc que vous conseillez de revoir les parties consacrées à cela (lien pour envoyer un fichier / un mail et partie formulaire HTML et PhP).

      Bonne continuation,
      Pierre

  6. Vous etes genial, j’ai vu vos cours sur youtube et votre adresses qui ma poussé avenir sur votre site. Mr pierre je suis un petit zero de la programmation mais suis pas mal j’aimerai vous assistez dans vos taches pour me former…! merci pour les cours suis content

  7. je voudrais que tu m’explique un peut comment fonctionne les fonction static en phph

  8. bonjour
    merci pour ce cours mais je ne vois pas la partie base de données et pourtant l’intitulé c’est cours complet!!!!

  9. Salut Pierre Giraud,

    Je viens de regarder le tuto sur HTML et CSS, c’est magnifique !!!
    Maintenant j’aimerais creer des sites dynamiques avec PHP MySQL.
    Pourriez vous m’aider s’il vous plait. Merci de votre aide en envoyant des tuto tres tres interessant.

Répondre

Votre adresse email ne sera pas publiée. Les champs obligatoires sont marqués d'une étoile *

*