Version en ligne

Tutoriel : Concevez votre site web avec PHP et MySQL

Table des matières

Concevez votre site web avec PHP et MySQL
Introduction à PHP
Les sites statiques et dynamiques
Comment fonctionne un site web ?
Les langages du Web
Et la concurrence ?
Préparer son ordinateur
De quels programmes a-t-on besoin ?
Sous Windows : WAMP
Sous Mac OS X : MAMP
Sous Linux : XAMPP
Utiliser un bon éditeur de fichiers
Premiers pas avec PHP
Les balises PHP
Afficher du texte
Les commentaires
Inclure des portions de page
Le principe
La pratique
Les variables
Qu'est-ce qu'une variable ?
Affecter une valeur à une variable
Afficher et concaténer des variables
Faire des calculs simples
Les conditions
La structure de base : if… else
Une alternative pratique : switch
Les ternaires : des conditions condensées
Les boucles
Une boucle simple : while
Une boucle plus complexe : for
Les fonctions
Qu'est-ce qu'une fonction ?
Les fonctions prêtes à l'emploi de PHP
Créer ses propres fonctions
Les tableaux
Les deux types de tableaux
Parcourir un tableau
Rechercher dans un tableau
Transmettre des données avec l'URL
Envoyer des paramètres dans l'URL
Récupérer les paramètres en PHP
Ne faites jamais confiance aux données reçues !
Transmettre des données avec les formulaires
Créer la base du formulaire
Les éléments du formulaire
Ne faites jamais confiance aux données reçues : la faille XSS
L'envoi de fichiers
TP : page protégée par mot de passe
Instructions pour réaliser le TP
Correction
Aller plus loin
Variables superglobales, sessions et cookies
Les variables superglobales
Les sessions
Les cookies
Lire et écrire dans un fichier
Autoriser l'écriture de fichiers (chmod)
Ouvrir et fermer un fichier
Lire et écrire dans un fichier
Présentation des bases de données
Le langage SQL et les bases de données
Structure d'une base de données
Mais où sont enregistrées les données ?
phpMyAdmin
Créer une table
Modifier une table
Autres opérations
Lire des données
Se connecter à la base de données en PHP
Récupérer les données
Les critères de sélection
Construire des requêtes en fonction de variables
Traquer les erreurs
Écrire des données
INSERT : ajouter des données
UPDATE : modifier des données
DELETE : supprimer des données
TP : un mini-chat
Instructions pour réaliser le TP
Correction
Aller plus loin
Les fonctions SQL
Les fonctions scalaires
Les fonctions d'agrégat
GROUP BY et HAVING : le groupement de données
Les dates en SQL
Les champs de type date
Les fonctions de gestion des dates
TP : un blog avec des commentaires
Instructions pour réaliser le TP
Correction
Aller plus loin
Les jointures entre tables
Modélisation d'une relation
Qu'est-ce qu'une jointure ?
Les jointures internes
Les jointures externes
Créer des images en PHP
Activer la bibliothèque GD
Les bases de la création d'image
Texte et couleur
Dessiner une forme
Des fonctions encore plus puissantes
Les expressions régulières (partie 1/2)
Où utiliser une regex ?
Des recherches simples
Les classes de caractères
Les quantificateurs
Les expressions régulières (partie 2/2)
Une histoire de métacaractères
Les classes abrégées
Construire une regex complète
Capture et remplacement
La programmation orientée objet
Qu'est-ce qu'un objet ?
Créer une classe
Créer un objet à partir de la classe
Constructeur, destructeur et autres fonctions spéciales
L'héritage
Les droits d'accès et l'encapsulation
Organiser son code selon l'architecture MVC
Qu'est-ce que l'architecture MVC ?
Le code du TP blog et ses défauts
Amélioration du TP blog en respectant l'architecture MVC
Aller plus loin : les frameworks MVC
TP : créer un espace membres
Conception de l'espace membres
Réalisation des pages principales de l'espace membres
Aller plus loin
Envoyez votre site sur le web
Le nom de domaine
L'hébergeur
Utiliser un client FTP
Accéder à la base de données de l'hébergeur
Codez proprement
Des noms clairs
Indentez votre code
Un code correctement commenté
Utilisez la documentation PHP !
Accéder à la doc'
Présentation d'une fonction
Au secours ! Mon script plante !
Les erreurs les plus courantes
Traiter les erreurs SQL
Quelques erreurs plus rares
Protéger un dossier avec un .htaccess
Créer le .htaccess
Créer le .htpasswd
Envoyer les fichiers sur le serveur
Mémento des expressions régulières
Structure d'une regex
Classes de caractères
Quantificateurs
Métacaractères
Classes abrégées
Capture et remplacement
Options

Concevez votre site web avec PHP et MySQL

Blogs, réseaux sociaux, pages d'accueil personnalisables... Depuis quelques années, les sites web ont gagné en fonctionnalités et sont devenus dans le même temps de plus en plus complexes.

Que le temps de la "page web perso" est loin ! Il y a une époque où l'on pouvait se contenter de créer un site basique. Un peu de texte, quelques images : hop là, notre site perso était prêt. :-°
Aujourd'hui, c'est différent : il faut que ça bouge ! On s'attend à ce qu'un site soit régulièrement mis à jour : on veut voir des actualités sur la page d'accueil, on veut pouvoir les commenter, discuter sur des forums, bref, participer à la vie du site.

Le langage PHP a justement été conçu pour créer des sites "vivants" (on parle de sites dynamiques). Et si vous voulez apprendre à créer vous aussi des sites web dynamiques, c'est votre jour de chance : vous êtes sur un cours pour vrais débutants en PHP !
L'essentiel, c'est de lire en entier les chapitres dans l'ordre. Après, ça passe tout seul et vous vous étonnerez bientôt de ce que vous êtes capable de faire ! :)

Image utilisateurCe cours vous plaît ?

Si vous avez aimé ce cours, vous pouvez retrouver le livre "Concevez votre site web avec PHP et MySQL" du même auteur, en vente sur le Site du Zéro, en librairie et dans les boutiques en ligne. Vous y trouverez ce cours adapté au format papier avec une série de chapitres inédits.

Plus d'informations

Image utilisateur

Introduction à PHP

Les sites statiques et dynamiques

Ce qui fait le succès du Web aujourd'hui, c'est à la fois sa simplicité et sa facilité d'accès. Un internaute lambda n'a pas besoin de savoir « comment ça fonctionne derrière ». Et heureusement pour lui.

En revanche, un apprenti webmaster tel que vous doit, avant toute chose, connaître les bases du fonctionnement d'un site web. Qu'est-ce qu'un serveur et un client ? Comment rend-on son site dynamique ? Que signifient PHP et MySQL ?

Ce premier chapitre est là pour répondre à toutes ces questions et vous montrer que vous êtes capables d'apprendre à créer des sites web dynamiques. Tous les lecteurs seront à la fin rassurés de savoir qu'ils commencent au même niveau !

Les sites statiques et dynamiques

Introduction à PHP Comment fonctionne un site web ?

On considère qu'il existe deux types de sites web : les sites statiques et les sites dynamiques.

L'éléPHPant, la mascotte de PHP
L'éléPHPant, la mascotte de PHP

L'objectif de ce cours est de vous rendre capables de réaliser des sites web dynamiques entièrement par vous-mêmes, pas à pas.
En effet, ceux-ci peuvent proposer des fonctionnalités bien plus excitantes que les sites statiques. Voici quelques éléments que vous serez en mesure de réaliser :

Bien entendu, ce ne sont là que des exemples. Il est possible d'aller encore plus loin, tout dépend de vos besoins. Sachez par exemple que la quasi-totalité des sites de jeux en ligne sont dynamiques. On retrouve notamment des sites d'élevage virtuel d'animaux, des jeux de conquête spatiale, etc.

Mais… ne nous emportons pas. Avant de pouvoir en arriver là, vous avez de la lecture et bien des choses à apprendre ! Commençons par la base : savez-vous ce qui se passe lorsque vous consultez une page web ?

Fatigué(e) de lire sur un écran ? Découvrez ce cours en livre.

Introduction à PHP Comment fonctionne un site web ?

Comment fonctionne un site web ?

Les sites statiques et dynamiques Les langages du Web

Lorsque vous voulez visiter un site web, vous tapez son adresse dans votre navigateur web, que ce soit Mozilla Firefox, Internet Explorer, Opera, Safari ou un autre. Mais ne vous êtes-vous jamais demandé comment faisait la page web pour arriver jusqu'à vous ?

Il faut savoir qu'Internet est un réseau composé d'ordinateurs. Ceux-ci peuvent être classés en deux catégories.

On résume : votre ordinateur est appelé le client, tandis que l'ordinateur qui détient le site web est appelé le serveur. Comment les deux communiquent-ils ?

C'est justement là que se fait la différence entre un site statique et un site dynamique. Voyons ensemble ce qui change.

Cas d'un site statique

Lorsque le site est statique, le schéma est très simple. Cela se passe en deux temps, ainsi que vous le schématise la figure suivante :

  1. le client demande au serveur à voir une page web ;

  2. le serveur lui répond en lui envoyant la page réclamée.

Transferts avec un site statique
Transferts avec un site statique

La communication est donc plutôt basique :

Sur un site statique, il ne se passe rien d'autre. Le serveur stocke des pages web et les envoie aux clients qui les demandent sans les modifier.

Cas d'un site dynamique

Lorsque le site est dynamique, il y a une étape intermédiaire : la page est générée (fig. suivante).

Transfert avec un site dynamique
Transfert avec un site dynamique

La page web est générée à chaque fois qu'un client la réclame. C'est précisément ce qui rend les sites dynamiques vivants : le contenu d'une même page peut changer d'un instant à l'autre.

C'est comme cela que certains sites parviennent à afficher par exemple votre pseudonyme sur toutes les pages. Étant donné que le serveur génère une page à chaque fois qu'on lui en demande une, il peut la personnaliser en fonction des goûts et des préférences du visiteur (et afficher, entre autres, son pseudonyme).

Fatigué(e) de lire sur un écran ? Découvrez ce cours en livre.

Les sites statiques et dynamiques Les langages du Web

Les langages du Web

Comment fonctionne un site web ? Et la concurrence ?

Lorsqu'on crée un site web, on est amené à manipuler non pas un mais plusieurs langages. En tant que webmaster, il faut impérativement les connaître.

Pour un site statique : HTML et CSS

De nombreux langages ont été créés pour produire des sites web. Deux d'entre eux constituent une base incontournable pour tous les webmasters.

<p>Bonjour, je suis un <em>paragraphe</em> de texte !</p>
  • CSS : c'est le langage de mise en forme des sites web. Alors que le HTML permet d'écrire le contenu de vos pages web et de les structurer, le langage CSS s'occupe de la mise en forme et de la mise en page. C'est en CSS que l'on choisit notamment la couleur, la taille des menus et bien d'autres choses encore. Voici un code CSS :

  • div.banner {
       text-align: center;
       font-weight: bold;
       font-size: 120%;
    }

    Ces langages sont la base de tous les sites web. Lorsque le serveur envoie la page web au client, il envoie en fait du code en langage HTML et CSS.

    Le problème, c'est que lorsqu'on connaît seulement HTML et CSS, on ne peut produire que des sites statiques… et non des sites dynamiques ! Pour ces derniers, il est nécessaire de manipuler d'autres langages en plus de HTML et CSS.

    La question qu'il faut vous poser est donc : connaissez-vous HTML et CSS ?

    Si oui, c'est parfait, vous pouvez continuer car nous en aurons besoin par la suite. Si la réponse est non, pas de panique. Ces langages ne sont pas bien difficiles, ils sont à la portée de tous. Vous pouvez les apprendre en lisant mon cours sur HTML et CSS.
    Sachez qu'apprendre ces langages n'est l'affaire que de quelques petites semaines, voire moins si vous avez suffisamment de temps libre.

    Le serveur envoie du HTML et du CSS au client
    Le serveur envoie du HTML et du CSS au client

    Pour un site dynamique : ajoutez PHP et MySQL

    Quel que soit le site web que l'on souhaite créer, HTML et CSS sont donc indispensables. Cependant, ils ne suffisent pas pour réaliser des sites dynamiques. Il faut les compléter avec d'autres langages.

    C'est justement tout l'objet de ce cours : vous allez apprendre à manipuler PHP et MySQL pour réaliser un site web dynamique.

    <?php echo "Vous êtes le visiteur n°" . $nbre_visiteurs; ?>
  • MySQL : c'est ce qu'on appelle un SGBD (Système de Gestion de Base de Données). Pour faire simple, son rôle est d'enregistrer des données de manière organisée afin de vous aider à les retrouver facilement plus tard. C'est grâce à MySQL que vous pourrez enregistrer la liste des membres de votre site, les messages postés sur le forum, etc. Le langage qui permet de communiquer avec la base de données s'appelle le SQL. Voici un code en langage SQL :

  • SELECT id, auteur, message, datemsg FROM livreor ORDER BY datemsg DESC LIMIT 0, 10

    PHP peut fonctionner seul et suffit à créer un site dynamique, mais les choses deviennent réellement intéressantes lorsqu'on le combine à un SGBD tel que MySQL. Cependant pour simplifier, oublions pour le moment MySQL et concentrons-nous sur PHP.

    PHP génère du HTML

    Les clients sont incapables de comprendre le code PHP : ils ne connaissent que le HTML et le CSS. Seul le serveur est capable de lire du PHP.

    Le rôle de PHP est justement de générer du code HTML (on peut aussi générer du CSS, mais c'est plus rare), code qui est ensuite envoyé au client de la même manière qu'un site statique, comme le montre la fig. suivante.

    PHP décide ce qui va être affiché sur la page web envoyée au visiteur
    PHP décide ce qui va être affiché sur la page web envoyée au visiteur

    PHP est un langage de programmation utilisé sur de nombreux serveurs pour prendre des décisions. C'est PHP qui décide du code HTML qui sera généré et envoyé au client à chaque fois.

    Pour bien comprendre l'intérêt de tout cela, prenons un exemple. On peut écrire en PHP : « Si le visiteur est membre de mon site et qu'il s'appelle Jonathan, affiche Bienvenue Jonathan sur la page web. En revanche, si ce n'est pas un membre de mon site, affiche Bienvenue à la place et propose au visiteur de s’inscrire. »
    C'est un exemple très basique de site dynamique : selon que vous êtes un membre enregistré ou non, vous ne verrez pas les mêmes choses et n'aurez peut-être pas accès à toutes les sections.

    Fatigué(e) de lire sur un écran ? Découvrez ce cours en livre.

    Comment fonctionne un site web ? Et la concurrence ?

    Et la concurrence ?

    Les langages du Web Préparer son ordinateur

    HTML et CSS n'ont pas de concurrents car ce sont des standards. Tout le monde est censé les connaître et les utiliser sur tous les sites web.

    En revanche, pour ce qui est des sites dynamiques, PHP et MySQL sont loin d'être les seuls sur le coup. Je ne peux pas vous faire une liste complète de leurs concurrents, ce serait bien trop long (et ennuyeux !). Cependant, pour votre culture générale, il faut au moins connaître quelques autres grands noms.

    Tout d'abord, si on a souvent tendance à combiner PHP et MySQL pour réaliser de puissants sites dynamiques, il ne faut pas mélanger les deux. Le premier a des concurrents différents du second.

    Les concurrents de PHP

    Parmi les concurrents de PHP, on peut citer les suivants :

    Ruby on Rails
    Ruby on Rails

    Je ne peux pas présenter ici tous les concurrents, mais cela devrait déjà vous donner une bonne idée. Pour information, il est aussi possible d'utiliser par exemple le langage C ou le C++, bien que ce soit plus complexe et pas forcément toujours très adapté (en clair, je ne le recommande pas du tout).

    Lequel choisir dans le lot ? Lequel est le meilleur ?

    Étant donné l'objet de ce cours, vous vous attendez à ce que je vous réponde instantanément « PHP ! ». Mais non. En fait, tout dépend de vos connaissances en programmation. Si vous avez déjà manipulé le Java, vous serez plus rapidement à l'aise avec les JSP. Si vous connaissez Python, Django semble tout indiqué.

    Quant à PHP, il se démarque de ses concurrents par une importante communauté qui peut vous aider rapidement sur Internet si vous avez des problèmes. C'est un langage facile à utiliser, idéal pour les débutants comme pour les professionnels : Wikipédia et Facebook sont des exemples de sites célèbres et très fréquentés qui fonctionnent grâce à PHP.

    Bref, il n'y a pas de meilleur choix. Je vous recommande le langage pour lequel vous serez certains d'avoir quelqu'un pour vous aider. PHP en ce sens est souvent un très bon choix.

    Les concurrents de MySQL

    En ce qui concerne les bases de données, le choix est là encore très vaste.
    Cependant, alors que PHP et ses concurrents sont la plupart du temps libres et gratuits, ce n'est pas le cas de la plupart des SGBD.

    Parmi les concurrents de MySQL, je vous conseille de connaître (au moins de nom) les suivants :

    Oracle
    Oracle

    Là encore, cette liste est loin d'être exhaustive mais vous présente au moins quelques grands noms.
    Pour information, MySQL reste de loin le SGBD libre et gratuit le plus utilisé. Parmi les solutions professionnelles payantes, Oracle est le plus avancé et le plus répandu mais son utilisation est surtout réservée aux grosses entreprises.

    En fin de compte, si vos moyens sont limités, vous n'avez pas beaucoup de choix pour le SGBD. MySQL est le plus indiqué car il est libre, gratuit, performant et utilisé par de nombreuses personnes qui sont susceptibles de vous aider.

    Plusieurs combinaisons sont possibles

    Comme vous avez pu le constater, vous avez le choix entre de nombreux outils pour réaliser un site dynamique. La plupart d'entre eux sont gratuits.

    Sachez que vous pouvez a priori combiner ces outils comme bon vous semble. Par exemple, on peut très bien utiliser PHP avec une autre base de données que MySQL, telle que Oracle ou PostgreSQL. De même, MySQL peut être utilisé avec n'importe quel autre langage : Java, Python, Ruby, etc.

    Cependant, la combinaison « PHP + MySQL » est probablement la plus courante. Ce n'est pas par hasard si ce cours traite de ces deux outils qui ont fait leurs preuves.

    En résumé

    Fatigué(e) de lire sur un écran ? Découvrez ce cours en livre.

    Les langages du Web Préparer son ordinateur

    Préparer son ordinateur

    Et la concurrence ? De quels programmes a-t-on besoin ?

    Nous savons désormais que PHP s'exécute sur le serveur et que son rôle est de générer des pages web. Cependant, seul un serveur peut lire du PHP ; or votre ordinateur n'est pas un serveur. Comment diable allez-vous pouvoir créer un site dynamique si PHP ne fonctionne pas chez vous ?

    Qu'à cela ne tienne : nous allons temporairement transformer votre ordinateur en serveur pour que vous puissiez exécuter du PHP et travailler sur votre site dynamique. Vous serez fin prêts à programmer après avoir lu ce chapitre !

    De quels programmes a-t-on besoin ?

    Préparer son ordinateur Sous Windows : WAMP

    Selon que l'on crée un site statique ou un site dynamique, on a besoin de logiciels différents. En fait, faire un site dynamique nécessite malheureusement pour nous quelques logiciels supplémentaires !

    Avec un site statique

    Les webmasters qui créent des sites statiques avec HTML et CSS ont de la chance, ils ont en général déjà tous les programmes dont ils ont besoin.

    Mozilla Firefox
    Mozilla Firefox

    Cependant, pour ceux qui comme nous travaillent sur des sites dynamiques, ces outils ne suffisent pas. Il est nécessaire d'installer des programmes supplémentaires.

    Avec un site dynamique

    Pour que votre ordinateur puisse lire du PHP, il faut qu'il se comporte comme un serveur. Rassurez-vous, vous n'avez pas besoin d'acheter une machine spéciale pour cela : il suffit simplement d'installer les mêmes programmes que ceux que l'on trouve sur les serveurs qui délivrent les sites web aux internautes.

    Ces programmes dont nous allons avoir besoin, quels sont-ils ?

    Logo d'Apache
    Logo d'Apache

    Tous ces éléments qui vont nous aider à créer notre site dynamique sont libres et gratuits. Certes, il en existe d'autres (parfois payants), mais la combinaison Apache + PHP + MySQL est la plus courante sur les serveurs web, à tel point qu'on a créé des « packs » tout prêts qui contiennent tous ces éléments. Il est possible de les installer un à un mais cela prend plus de temps et vous n'allez rien y gagner (sauf si vous êtes administrateur de serveur, ce qui ne devrait pas être votre cas ;)).

    Dans la suite de ce chapitre, nous allons voir comment installer le « pack » qui convient en fonction de votre système d'exploitation.

    Fatigué(e) de lire sur un écran ? Découvrez ce cours en livre.

    Préparer son ordinateur Sous Windows : WAMP

    Sous Windows : WAMP

    De quels programmes a-t-on besoin ? Sous Mac OS X : MAMP

    Il existe plusieurs paquetages tout prêts pour Windows. Je vous propose d'utiliser WAMP Server qui a l'avantage d'être régulièrement mis à jour et disponible en français.

    Commencez par télécharger WAMP ici.

    Une fois téléchargé, installez-le en laissant toutes les options par défaut. Il devrait s'installer dans un répertoire comme C:\wamp et créer un raccourci dans le menu Démarrer.

    Lorsque vous lancez WAMP, une icône doit apparaître en bas à droite de la barre des tâches, à côté de l'horloge, comme sur la figure suivante.

    Icône de WAMP
    Icône de WAMP

    Si une fenêtre apparaît pour vous indiquer que le pare-feu bloque Apache, cliquez sur Autoriser l'accès (fig. suivante). Vous n'avez aucune raison de vous inquiéter, c'est parfaitement normal.

    Firewall et Apache
    Firewall et Apache

    Par défaut, WAMP est en anglais. Vous pouvez facilement le passer en français en faisant un clic droit sur l'icône de WAMP dans la barre des tâches, puis en allant dans le menu Language / french (fig. suivante).

    Modification de la langue
    Modification de la langue

    WAMP est maintenant en français !

    Vous pouvez alors lancer la page d'accueil de WAMP. Faites un clic gauche sur l'icône de WAMP (attention, j'ai bien dit un clic gauche cette fois), puis cliquez sur Localhost, comme le montre la figure suivante.

    Menu localhost de WAMP
    Menu localhost de WAMP

    Une page web similaire à la capture de la figure suivante devrait s'ouvrir dans votre navigateur favori (Firefox, par exemple). Si la page s'affiche chez vous, cela signifie qu'Apache fonctionne.

    Page d'accueil de WAMP
    Page d'accueil de WAMP

    La section « Vos projets » de la page d'accueil de WAMP doit indiquer qu'aucun projet n'existe pour le moment. Considérez que chaque site web que vous entreprenez de faire est un nouveau projet.

    Nous allons créer un projet de test que nous appellerons tests. Pour ce faire, ouvrez l'explorateur Windows et rendez-vous dans le dossier où WAMP a été installé, puis dans le sous-dossier intitulé www. Par exemple : C:\wamp\www.

    Une fois dans ce dossier, créez un nouveau sous-dossier que vous appellerez tests, comme le suggère l'image suivante.

    Dossier créé pour WAMP
    Dossier créé pour WAMP

    Retournez sur la page d'accueil de WAMP et actualisez-la (vous pouvez appuyer sur la touche F5). La section « Vos projets » devrait maintenant afficher « tests » car WAMP a détecté que vous avez créé un nouveau dossier (fig. suivante).

    Projets dans WAMP
    Projets dans WAMP

    Vous créerez là-dedans vos premières pages web en PHP.

    Vous pouvez cliquer sur le lien « tests ». Comme vous n'avez pas encore créé de fichier PHP, vous devriez voir une page vide comme dans la figure suivante.

    Le contenu est pour le moment vide
    Le contenu est pour le moment vide

    Si vous avez le même résultat, cela signifie que tout fonctionne. Bravo, vous avez installé WAMP et il fonctionne correctement. Vous êtes prêts à programmer en PHP !

    Vous pouvez passer les sections suivantes qui ne concernent que les utilisateurs sous Mac OS X et Linux.

    Fatigué(e) de lire sur un écran ? Découvrez ce cours en livre.

    De quels programmes a-t-on besoin ? Sous Mac OS X : MAMP

    Sous Mac OS X : MAMP

    Sous Windows : WAMP Sous Linux : XAMPP

    Pour ceux qui ont un Mac sous Mac OS X, je vous conseille le programme MAMP (Mac Apache MySQL PHP). Il est vraiment très simple à installer et à utiliser.
    Vous pouvez le télécharger ici.

    Vous devriez avoir téléchargé une archive au format .dmg qui contient le logiciel. Lorsque vous l'ouvrez, la fenêtre de la figure suivante apparaît.

    Archive DMG de MAMP
    Archive DMG de MAMP

    Vous devez tout simplement faire glisser le dossier MAMP en bas à gauche vers le dossier « Applications » au-dessus.

    MAMP est maintenant installé. Vous le trouverez dans votre dossier « Applications ». La fenêtre principale de MAMP indique que les serveurs Apache et MySQL ont été correctement démarrés. L'icône de chacun de ces éléments doit être verte comme sur la figure suivante.

    Fenêtre principale de MAMP
    Fenêtre principale de MAMP

    Je vous invite à configurer le répertoire dans lequel Apache ira chercher les fichiers PHP de votre site web. Pour cela, cliquez sur le bouton « Préférences » de la fenêtre principale. Une boîte de dialogue de configuration s'ouvre (figure suivante). Cliquez sur l'onglet Apache en haut.

    Configuration de MAMP
    Configuration de MAMP

    Cliquez sur le bouton « Choisir » pour sélectionner le dossier dans lequel vous placerez les fichiers de votre site web. Sous Mac OS, un dossier est déjà créé : il s'agit de « Sites », dans votre répertoire personnel (fig. suivante).

    Le dossier Sites de Mac OS X
    Le dossier Sites de Mac OS X

    Sélectionnez ce répertoire, qui devrait être de la forme /Users/pseudo/Sites. Notez que ce n'est pas une obligation : vous pouvez utiliser n'importe quel autre répertoire si vous le désirez.

    Validez les changements et retournez sur la fenêtre principale de MAMP. Là, cliquez sur « Ouvrir la page d'accueil ». Votre navigateur (Firefox ou Safari, par exemple) devrait alors s'ouvrir et afficher une page web.

    Pour vous préparer pour la suite, je vous invite à créer un dossier « tests » dans votre répertoire « Sites ». Nous placerons nos premiers fichiers PHP de test à l'intérieur.

    Si le dossier « tests » a été correctement créé, vous pouvez visualiser son contenu en vous rendant à l'adresse http://localhost:8888/tests/.

    Si tout va bien, une page vide devrait s'afficher (figure suivante).

    Dossier vide MAMP
    Dossier vide MAMP

    MAMP est correctement installé et configuré. Vous êtes maintenant prêts à travailler en PHP pour le chapitre suivant !

    Fatigué(e) de lire sur un écran ? Découvrez ce cours en livre.

    Sous Windows : WAMP Sous Linux : XAMPP

    Sous Linux : XAMPP

    Sous Mac OS X : MAMP Utiliser un bon éditeur de fichiers

    Sous Linux, il est courant d'installer Apache, PHP et MySQL séparément. Toutefois, il existe aussi des packs tout prêts comme XAMPP (X Apache MySQL Perl PHP), anciennement connu sous le nom de LAMPP.

    Ce pack est plus complet que WAMP pour Windows ou MAMP pour Mac OS X. Nous n'utiliserons toutefois qu'une partie des éléments installés.

    Sur le site officiel de XAMPP, recherchez le lien XAMPP pour Linux.

    Téléchargement de XAMPP pour Linux
    Téléchargement de XAMPP pour Linux

    Sur la page qui s'affiche, recherchez un peu plus bas le lien de téléchargement de XAMPP pour Linux.

    Lien de téléchargement de XAMPP
    Lien de téléchargement de XAMPP

    Une fois le téléchargement terminé, ouvrez une console. L'installation et le lancement de XAMPP se font en effet uniquement en console (Allons, allons, pas de chichis, vous n'allez pas me faire avaler que c'est la première fois que vous l'ouvrez, la console !).

    Rendez-vous dans le dossier dans lequel vous avez téléchargé XAMPP. Par exemple, dans mon cas, le fichier se trouve sur le bureau :

    cd  /Desktop

    Vous devez passer root pour installer et lancer XAMPP.
    root est le compte administrateur de la machine qui a notamment le droit d'installer des programmes. Normalement, il suffit de taper su et de rentrer le mot de passe root. Sous Ubuntu, il faudra taper sudo su et taper votre mot de passe habituel.

    Si comme moi vous utilisez Ubuntu, tapez donc :

    sudo su

    Vous devez maintenant extraire le dossier compressé dans /opt. Pour ce faire, recopiez simplement la commande suivante :

    tar xvfz xampp-linux-1.6.7.tar.gz -C /opt

    Lorsque la décompression des fichiers est terminée, c'est fait ! XAMPP est maintenant installé.

    Pour démarrer XAMPP (et donc Apache, PHP et MySQL), tapez la commande suivante :

    /opt/lampp/lampp start

    Si vous désirez plus tard arrêter XAMPP, tapez :

    /opt/lampp/lampp stop

    Ce n'est pas bien compliqué, comme vous pouvez le voir !

    Vous pouvez maintenant tester XAMPP en ouvrant votre navigateur favori et en tapant l'adresse suivante : http://localhost.

    Vous devriez voir la page de sélection de la langue de XAMPP. Cliquez sur « Français », comme la figure suivante vous y invite.

    Choix de la langue dans XAMPP
    Choix de la langue dans XAMPP

    La page principale de configuration de XAMPP s'affiche ensuite. Elle est plus complète que ses homologues WAMP et MAMP, notamment parce que XAMPP contient plus de logiciels et propose donc plus de fonctionnalités (beaucoup plus).

    Vous pouvez vérifier que tout fonctionne correctement en allant dans le menu Statut, comme dans la figure suivante.

    Statut des composants de XAMPP
    Statut des composants de XAMPP

    Au minimum, les modules MySQL et PHP doivent être en vert. Quant aux autres, nous ne les utiliserons pas, donc peu importe. ;-)

    Les fichiers PHP devront être placés dans le répertoire /opt/lampp/htdocs. Vous pouvez y créer un sous-répertoire tests pour vos premiers tests.

    cd /opt/lampp/htdocs
    mkdir tests

    Une fois le dossier créé, vous pouvez y accéder depuis votre navigateur à l'adresse suivante : http://localhost/tests.

    Vous devriez voir une page similaire à la figure suivante.

    Le dossier tests est actuellement vide dans XAMPP
    Le dossier tests est actuellement vide dans XAMPP

    Vous êtes prêts à travailler en PHP !

    Fatigué(e) de lire sur un écran ? Découvrez ce cours en livre.

    Sous Mac OS X : MAMP Utiliser un bon éditeur de fichiers

    Utiliser un bon éditeur de fichiers

    Sous Linux : XAMPP Premiers pas avec PHP

    Comme vous devez déjà le savoir, pour éditer le code d'une page web vous avez plusieurs solutions :

    Je vous propose donc d'installer un logiciel qui va vous permettre d'éditer vos fichiers source de manière efficace. Vous en avez probablement déjà installé un si vous avez appris à programmer en HTML / CSS, mais comme on n'est jamais trop prudent, je vais rapidement vous en présenter quelques-uns en fonction de votre système d'exploitation.

    Voici le code source HTML que nous allons utiliser pour commencer en terrain connu. Copiez-collez ce code dans l'éditeur de texte que je vais vous faire installer :

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
        <head>
            <title>Ceci est une page HTML de test</title>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        </head>
        <body>
            <h2>Page de test</h2>
            
            <p>
                Cette page contient <strong>uniquement</strong> du code HTML.<br />
                Voici quelques petits tests :
            </p>
            
            <ul>
            <li style="color: blue;">Texte en bleu</li>
            <li style="color: red;">Texte en rouge</li>
            <li style="color: green;">Texte en vert</li>
            </ul>
        </body>
    </html>

    Sous Windows

    Il existe beaucoup de logiciels gratuits à télécharger pour éditer du texte sous Windows. Il m'est impossible de tous vous les présenter : je vais donc vous en recommander un qui est très utilisé et en lequel vous pouvez avoir confiance : Notepad++.

    Ce logiciel est petit et rapide à télécharger. N'hésitez pas à l'essayer. Page de téléchargement de Notepad++.

    Lorsque Notepad++ s'ouvre, il présente généralement — comme vous le montre la figure suivante — un fichier vide (vous pouvez en créer un nouveau au besoin en allant dans le menu Fichier / Nouveau).

    Le logiciel Notepad++
    Le logiciel Notepad++

    Copiez-collez le code HTML que je viens de vous donner dans Notepad++. Vous devriez voir l'écran de la figure suivante.

    Notepad++ : création d'un nouveau fichier
    Notepad++ : création d'un nouveau fichier

    Comme vous pouvez le voir, le code n'est pas coloré. La raison vient du fait que Notepad++ ne sait pas de quel type de code source il s'agit. Vous devez au préalable enregistrer le fichier.

    Allez dans Fichier / Enregistrer, puis choisissez le dossier où vous souhaitez enregistrer le fichier. Je vous conseille d'aller dans le dossier C:\wamp\www\tests que vous avez créé à l'installation de WAMP.
    Choisissez le type de fichier .html (Hyper Text Markup Language file) puis donnez un nom à votre fichier, ainsi que le montre la figure suivante.

    Enregistrement d'un fichier HTML
    Enregistrement d'un fichier HTML

    Une fois le fichier enregistré, le code source apparaît coloré (figure suivante).

    Notepad++ avec la coloration syntaxique
    Notepad++ avec la coloration syntaxique

    Vous pourrez suivre la même procédure plus loin avec les fichiers PHP, à condition d'enregistrer le fichier en .php. Ça vous entraînera, vous verrez.

    Sous Mac OS X

    Si vous êtes sous Mac, je peux vous recommander l'éditeur TextWrangler, qui est gratuit.

    Il existe aussi Smultron. Vous pouvez l'essayer mais il n'est malheureusement plus mis à jour.

    D'autres éditeurs de texte payants de qualité existent, notamment l'excellent TextMate.

    L'éditeur de texte TextWrangler sous Mac OS X
    L'éditeur de texte TextWrangler sous Mac OS X

    Sous Linux

    Sous Linux, les bons éditeurs ne manquent pas. Si vous êtes des habitués de la console, vous travaillerez sûrement avec plaisir avec vim ou emacs.

    Si vous recherchez un éditeur graphique plus facile à utiliser, je vous recommande gedit (fig. suivante) ou tout autre logiciel installé avec votre distribution Linux, cela fera l'affaire.

    gedit
    gedit

    Quel que soit le logiciel que vous utilisez, rassurez-vous, ça ne change pas du tout la manière dont vous allez apprendre le PHP : les manipulations seront exactement les mêmes pour tout le monde.

    En résumé

    Fatigué(e) de lire sur un écran ? Découvrez ce cours en livre.

    Sous Linux : XAMPP Premiers pas avec PHP

    Premiers pas avec PHP

    Utiliser un bon éditeur de fichiers Les balises PHP

    Dans le premier chapitre, nous avons découvert le principe de fonctionnement du PHP. Ici, nous allons passer au concret et réaliser notre toute première page web en PHP.

    Ne vous attendez pas à un résultat extraordinaire, mais cela va nous permettre de prendre nos marques. Vous allez en particulier comprendre comment on sépare le code HTML classique du code PHP.

    Vous êtes prêts ? Allons-y !

    Les balises PHP

    Premiers pas avec PHP Afficher du texte

    Vous savez donc que le code source d'une page HTML est constitué de balises (aussi appelées tags). Par exemple, <ul> est une balise.

    Le code PHP vient s'insérer au milieu du code HTML. On va progressivement placer dans nos pages web des morceaux de code PHP à l'intérieur du HTML. Ces bouts de code PHP seront les parties dynamiques de la page, c'est-à-dire les parties qui peuvent changer toutes seules (c'est pour cela qu'on dit qu'elles sont dynamiques).

    La figure suivante illustre cela.

    Insertion de code PHP
    Insertion de code PHP

    Comme vous pouvez le voir, on retrouve le code HTML que l'on connaît bien… et on insère en plus des données dynamiques au milieu. Ici, par exemple, c'est le pseudonyme : il change en fonction du visiteur. La partie surlignée peut donc changer selon les visiteurs.

    La forme d'une balise PHP

    Si je vous parle de cela, ce n'est pas par hasard. Pour utiliser du PHP, on va devoir introduire une nouvelle balise… et celle-ci est un peu spéciale. Elle commence par <?php et se termine par ?> ; c'est à l'intérieur que l'on mettra du code PHP, ce que je vais vous apprendre tout au long de ce cours.

    Voici une balise PHP vide :

    <?php ?>

    À l'intérieur, on écrira donc du code source PHP :

    <?php /* Le code PHP se met ici */ ?>

    On peut sans problème écrire la balise PHP sur plusieurs lignes. En fait, c'est même indispensable car la plupart du temps le code PHP fera plusieurs lignes. Cela donnera quelque chose comme :

    <?php
    /* Le code PHP se met ici
    Et ici
    Et encore ici */
    ?>

    Insérer une balise PHP au milieu du code HTML

    La balise PHP que nous venons de découvrir s'insère au milieu du code HTML comme je vous l'ai dit plus tôt. Pour reprendre l'exemple que l'on a vu au chapitre précédent :

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
        <head>
            <title>Ceci est une page de test avec des balises PHP</title>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        </head>
        <body>
            <h2>Page de test</h2>
            
            <p>
                Cette page contient du code HTML avec des balises PHP.<br />
                <?php /* Insérer du code PHP ici */ ?>
                Voici quelques petits tests :
            </p>
            
            <ul>
            <li style="color: blue;">Texte en bleu</li>
            <li style="color: red;">Texte en rouge</li>
            <li style="color: green;">Texte en vert</li>
            </ul>
            
            <?php
            /* Encore du PHP
            Toujours du PHP */
            ?>
        </body>
    </html>

    Regardez bien les lignes 12, 22, 23, 24 et 25 de ce code, elles contiennent du PHP. Bien entendu, cette page ne fonctionne pas vu que nous n'avons pas encore écrit de vrai code PHP (ce sont juste des balises d'exemple). Tout ce qu'il vous faut retenir ici, c'est que dès que vous voulez mettre du code PHP, hop, vous ouvrez une balise PHP : <?php ?>.

    Peut-on placer une balise PHP n'importe où dans le code ?

    Oui ! Vraiment n'importe où. Pas seulement dans le corps de la page d'ailleurs : vous pouvez placer une balise PHP dans l'en-tête de la page (regardez la ligne 4 de l'exemple ci-dessous).

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    	<head>
            <title>Ceci est une page de test <?php /* Code PHP */ ?></title>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        </head>

    Plus fort encore, vous pouvez même insérer une balise PHP au milieu d'une balise HTML, comme le montre la ligne 5 de l'exemple ci-dessous (bon, ce n'est pas très joli, je vous l'accorde) :

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
        <head>
    		<title>Ceci est une page de test</title>
            <meta http-equiv="Content-Type" <?php /* Code PHP */ ?> content="text/html; charset=iso-8859-1" />
        </head>

    Comment ça fonctionne ? À quoi ça peut servir ?

    Il faut se rappeler que PHP génère du code HTML. Nous allons mieux comprendre le fonctionnement en apprenant à afficher du texte en PHP.

    Fatigué(e) de lire sur un écran ? Découvrez ce cours en livre.

    Premiers pas avec PHP Afficher du texte

    Afficher du texte

    Les balises PHP Les commentaires

    Bon, tout ça c'est bien beau, mais il serait temps de commencer à écrire du code PHP, non ?
    Grande nouvelle : c'est maintenant que vous allez apprendre votre première instruction en PHP.

    Ne vous attendez pas à quelque chose d'extraordinaire, votre PC ne va pas se mettre à danser la samba tout seul. ;-)

    Vous allez cependant un peu mieux comprendre comment le PHP fonctionne, c'est-à-dire comment il génère du code HTML. Il est indispensable de bien comprendre cela, soyez donc attentifs !

    L'instruction echo

    Le PHP est un langage de programmation, ce qui n'était pas le cas du HTML (on parle plutôt de langage de description, car il permet de décrire une page web). Si vous avez déjà programmé dans d'autres langages comme le C ou le Java, cela ne devrait pas vous surprendre. Néanmoins, dans ce cours, nous partons de Zéro donc je vais supposer que vous n'avez jamais fait de programmation auparavant.

    Tout langage de programmation contient ce qu'on appelle des instructions. On en écrit une par ligne en général, et elles se terminent toutes par un point-virgule. Une instruction commande à l'ordinateur d'effectuer une action précise.

    Ici, la première instruction que nous allons découvrir permet d'insérer du texte dans la page web. Il s'agit de l'instruction echo, la plus simple et la plus basique de toutes les instructions que vous devez connaître.

    Voici un exemple d'utilisation de cette instruction :

    <?php echo "Ceci est du texte"; ?>

    Comme vous le voyez, à l'intérieur de la balise PHP on écrit l'instruction echo suivie du texte à afficher entre guillemets. Les guillemets permettent de délimiter le début et la fin du texte, ce qui aide l'ordinateur à se repérer. Enfin, l'instruction se termine par un point-virgule comme je vous l'avais annoncé, ce qui signifie Fin de l'instruction.

    Il faut savoir qu'on a aussi le droit de demander d'afficher des balises. Par exemple, le code suivant fonctionne :

    <?php echo "Ceci est du <strong>texte</strong>"; ?>

    Le mot « texte » sera affiché en gras grâce à la présence des balises <strong> et </strong>.

    Comment faire pour afficher un guillemet ?

    Bonne question. Si vous mettez un guillemet, ça veut dire pour l'ordinateur que le texte à afficher s'arrête là. Vous risquez au mieux de faire planter votre beau code et d'avoir une terrible « Parse error ».

    La solution consiste à faire précéder le guillemet d'un antislash \ :

    <?php echo "Cette ligne a été écrite \"uniquement\" en PHP."; ?>

    Vous savez que le code PHP s'insère au milieu du code HTML. Alors allons-y, prenons une page basique en HTML et plaçons-y du code PHP (ligne 12) :

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
        <head>
            <title>Notre première instruction : echo</title>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        </head>
        <body>
            <h2>Affichage de texte avec PHP</h2>
            
            <p>
                Cette ligne a été écrite entièrement en HTML.<br />
                <?php echo "Celle-ci a été écrite entièrement en PHP."; ?>
            </p>
        </body>
    </html>

    Je vous propose de copier-coller ce code source dans votre éditeur de texte et d'enregistrer la page. Nous allons l'essayer et voir ce qu'elle produit comme résultat.

    Mais au fait, vous rappelez-vous comment vous devez enregistrer votre page PHP ?

    Enregistrer une page PHP

    Je vous ai expliqué comment faire dans le chapitre précédent mais un petit rappel ne peut pas faire de mal.

    Enregistrez la page avec l'extension .php, par exemple affichertexte.php, dans le dossier tests que je vous ai fait créer. Il doit se trouver dans C:\wamp\www\tests sous Windows.

    Si vous utilisez Notepad++, sélectionnez PHP Hypertext Preprocessor file (*.php) dans la fenêtre pour enregistrer, comme le montre la figure suivante.

    Sauvegarde d'une page PHP
    Sauvegarde d'une page PHP

    Une fois la page enregistrée, il faut maintenant la tester.

    Tester la page PHP

    Pour tester votre page PHP, cela dépend de votre système d'exploitation mais la manoeuvre est dans les grandes lignes la même.

    Sous Windows, démarrez WAMP si ce n'est pas déjà fait. Allez dans le menu Localhost, la page d'accueil s'ouvre. Là, si vous avez bien créé le dossier tests dans le répertoire www comme indiqué au chapitre précédent, vous devriez voir un lien vers le dossier tests. Cliquez dessus (nous avons déjà fait cela dans le chapitre précédent).

    Une page web s'ouvre indiquant tous les fichiers qui se trouvent dans le dossier tests. Vous devriez avoir le fichier affichertexte.php. Cliquez dessus : votre ordinateur génère alors le code PHP puis ouvre la page. Vous avez le résultat devant vos yeux.

    Le même résultat peut être obtenu dans votre navigateur en allant directement à l'adresse http://localhost/tests/affichertexte.php. La méthode devrait être quasiment la même que vous soyez sous Windows, Mac OS X ou Linux.

    Je vous propose également d'essayer le résultat directement sur le Site du Zéro si vous souhaitez le comparer au vôtre (je vous conseille fortement de savoir afficher la page chez vous directement).

    Essayer !

    Alors, que voyez-vous ?
    Je pense que vous êtes étonnés et surpris de ce que je vous ai fait faire : ça a l'air d'être inutile, et ce n'est pas tout à fait faux. Le code PHP a « écrit » une ligne à l'écran, tout simplement.

    Mais euh, c'est pas plus simple de l'écrire en HTML ?

    Si !
    Mais vous verrez bientôt l'intérêt de cette fonction. Pour le moment, on constate juste que ça écrit du texte.

    Comment PHP génère du code HTML

    L'instruction echo demande à PHP d'insérer à cet endroit le texte que vous demandez. Si on traduit l'instruction en français, ça donne : Insérer le texte : « Celle-ci a été écrite entièrement en PHP. ».

    Je vous ai expliqué dans le tout premier chapitre que le PHP générait du code HTML et renvoyait au visiteur uniquement du code HTML (accompagné éventuellement de sa feuille de style CSS), comme le montre la figure suivante.

    Génération de HTML par PHP
    Génération de HTML par PHP

    Sur la figure suivante, vous découvrez concrètement ce qu'il se passe avec notre code source.

    Le code PHP est exécuté en premier et l'ordinateur fait ce qu'on lui demande. Ici on lui a dit « Affiche ce texte ici ».

    Une fois toutes les instructions PHP exécutées (ici c'était simple, il n'y en avait qu'une !), la page qui sort est une page qui ne contient que du HTML ! C'est cette page de « résultat » qui est envoyée au visiteur, car celui-ci ne sait lire que le HTML.

    Génération de HTML avec echo
    Génération de HTML avec echo
    Fatigué(e) de lire sur un écran ? Découvrez ce cours en livre.

    Les balises PHP Les commentaires

    Les commentaires

    Afficher du texte Inclure des portions de page

    Bon, mine de rien je viens de vous apprendre pas mal de choses d'un coup, ça doit vous faire un choc. D'accord ce n'était pas extraordinaire, mais vous n'allez pas tarder à comprendre toute la subtilité de la chose.

    Avant de terminer ce chapitre, je tiens à vous parler de quelque chose qui à mes yeux a une très grande importance en PHP, comme dans tout langage de programmation : les commentaires.

    Un commentaire est un texte que vous mettez pour vous dans le code PHP. Ce texte est ignoré, c'est-à-dire qu'il disparaît complètement lors de la génération de la page. Il n'y a que vous qui voyez ce texte.

    Mais alors, à quoi sert un commentaire ?

    C'est pour vous. Cela permet de vous y retrouver dans votre code PHP, parce que si vous n'y touchez pas pendant des semaines et que vous y revenez, vous risquez d'être un peu perdus.
    Vous pouvez écrire tout et n'importe quoi, le tout est de s'en servir à bon escient.

    Il existe deux types de commentaires :

    Tout dépend de la longueur de votre commentaire. Je vais vous présenter les deux.

    Les commentaires monolignes

    Pour indiquer que vous écrivez un commentaire sur une seule ligne, vous devez taper deux slashs : « // ». Tapez ensuite votre commentaire.
    Un exemple ?

    <?php
    echo "J'habite en Chine."; // Cette ligne indique où j'habite
    
    // La ligne suivante indique mon âge
    echo "J'ai 92 ans.";
    ?>

    Je vous ai mis deux commentaires à des endroits différents :

    À vous de voir où vous placez vos commentaires : si vous commentez une ligne précise, mieux vaut mettre le commentaire à la fin de cette ligne.

    Les commentaires multilignes

    Ce sont les plus pratiques si vous pensez écrire un commentaire sur plusieurs lignes, mais on peut aussi s'en servir pour écrire des commentaires d'une seule ligne. Il faut commencer par écrire /* puis refermer par */ :

    <?php
    /* La ligne suivante indique mon âge
    Si vous ne me croyez pas...
    ... vous avez raison ;o) */
    echo "J'ai 92 ans.";
    ?>

    Ici, les commentaires n'ont pas grande utilité, mais vous verrez de quelle façon je les utilise dans les prochains chapitres pour vous décrire le code PHP.

    En résumé

    Fatigué(e) de lire sur un écran ? Découvrez ce cours en livre.

    Afficher du texte Inclure des portions de page

    Inclure des portions de page

    Les commentaires Le principe

    Vous est-il déjà arrivé de vouloir modifier le menu de votre site et de devoir pour cela corriger le code HTML de chacune de vos pages web ? Le menu d'une page web apparaît en effet sur chacune des pages et vous avez très certainement dû le recopier sur chacune d'elles. Ça marche, mais ce n'est pas très pratique…

    Une des fonctionnalités les plus simples et les plus utiles de PHP est l'inclusion de pages. On peut très facilement inclure toute une page ou un bout de page à l'intérieur d'une autre. Cela va grandement vous faciliter la tâche en vous évitant d'avoir à copier le même code HTML plusieurs fois.

    Au fil de ce chapitre, vous allez découvrir un des multiples avantages que vous donne le PHP lors de la création de votre site. C'est d'ailleurs ce qui m'a fait instantanément aimer ce langage lorsque je l'ai découvert, alors que je venais comme vous seulement d'apprendre le HTML et le CSS. :-)

    Le principe

    Inclure des portions de page La pratique

    La plupart des sites web sont généralement découpés selon le schéma suivant.

    Découpage usuel d'une page web
    Découpage usuel d'une page web

    Le problème

    Jusqu'ici, vous étiez condamnés à copier sur chaque page à l'identique :

    Cela donnait du code lourd et répétitif sur toutes les pages !

    Regardez le code d'exemple ci-dessous qui représente une page web (appelons-la index.php) avec en-tête, menu et pied de page :

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
       <head>
           <title>Mon super site</title>
           <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
       </head>
     
       <body>
     
           <!-- L'en-tête -->
     
           <div id="en_tete">
               
           </div>
     
           <!-- Le menu -->
     
           <div id="menu">        
               <div class="element_menu">
                   <h3>Titre menu</h3>
                   <ul>
                       <li><a href="page1.html">Lien</a></li>
                       <li><a href="page2.html">Lien</a></li>
                       <li><a href="page3.html">Lien</a></li>
                   </ul>
               </div>    
           </div>
     
           <!-- Le corps -->
     
           <div id="corps">
               <h1>Mon super site</h1>
           
               <p>
                   Bienvenue sur mon super site !<br />
                   Vous allez adorer ici, c'est un site génial qui va parler de... euh... Je cherche encore un peu le thème de mon site. :-D
               </p>
           </div>
     
           <!-- Le pied de page -->
     
           <div id="pied_de_page">
               <p>Copyright moi, tous droits réservés</p>
           </div>
     
       </body>
    </html>

    D'une page à l'autre, ce site contiendra à chaque fois le même code pour l'en-tête, le menu et le pied de page ! En effet, seul le contenu du corps change en temps normal.

    La solution

    En PHP, nous pouvons facilement insérer d'autres pages (on peut aussi insérer seulement des morceaux de pages) à l'intérieur d'une page.

    Le principe de fonctionnement des inclusions en PHP est plutôt simple à comprendre. Vous avez un site web composé de disons vingt pages. Sur chaque page, il y a un menu, toujours le même. Pourquoi ne pas écrire ce menu (et seulement lui) une seule fois dans une page menus.php ?

    En PHP, vous allez pouvoir inclure votre menu sur toutes vos pages. Lorsque vous voudrez modifier votre menu, vous n'aurez qu'à modifier menus.php et l'ensemble des pages de votre site web sera automatiquement mis à jour !

    Fatigué(e) de lire sur un écran ? Découvrez ce cours en livre.

    Inclure des portions de page La pratique

    La pratique

    Le principe Les variables

    Comme je vous le disais, je vous propose de créer un nouveau fichier PHP et d'y insérer uniquement le code HTML correspondant à votre menu, comme ceci :

    <div id="menu">        
       <div class="element_menu">
    	   <h3>Titre menu</h3>
    	   <ul>
    		   <li><a href="page1.html">Lien</a></li>
    		   <li><a href="page2.html">Lien</a></li>
    		   <li><a href="page3.html">Lien</a></li>
    	   </ul>
       </div>    
    </div>

    Faites de même pour une page entete.php et une page pied_de_page.php en fonction des besoins de votre site.

    Mais… la page menus.php ne contiendra pas le moindre code PHP… c'est normal ?

    Une page dont l'extension est .php peut très bien ne contenir aucune balise PHP (même si c'est plutôt rare). Dans ce cas, cela redevient une page HTML classique qui n'est pas modifiée avant l'envoi.

    En théorie, vous pourriez très bien enregistrer votre page avec l'extension .html : menus.html. Néanmoins, afin d'éviter de mélanger des pages .php et .html sur votre site, je vous recommande de travailler uniquement avec l'extension .php à partir de maintenant.

    Maintenant que vos « morceaux de pages » sont prêts, reprenez les pages de votre site, par exemple la page d'accueil nommée index.php. Remplacez le menu par le code PHP suivant :

    <?php include("menus.php"); ?>

    Cette instruction ordonne à l'ordinateur : « Insère ici le contenu de la page menus.php ».

    Si nous reprenons le code que nous avons vu tout à l'heure et que nous remplaçons chaque code répétitif par un include (lignes 10, 12 et 23), cela donne le code source suivant :

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
       <head>
           <title>Mon super site</title>
           <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
       </head>
     
    	<body>
     
            <?php include("entete.php"); ?>
     
            <?php include("menus.php"); ?>
      
            <div id="corps">
               <h1>Mon super site</h1>
           
    			<p>
                   Bienvenue sur mon super site !<br />
                   Vous allez adorer ici, c'est un site génial qui va parler de... euh... Je cherche encore un peu le thème de mon site. :-D
    			</p>
            </div>
      
            <?php include("pied_de_page.php"); ?>
     
       </body>
    </html>

    Nous avons vu que la page PHP était générée, donc la question que vous devez vous poser est : que reçoit le visiteur ? Eh bien, il reçoit exactement le même code qu'avant !

    Le schéma suivante vous aidera à comprendre comment les pages sont incluses.

    Les includes en pratiqueLes includes en pratique

    La page finale que reçoit le visiteur est identique à celle que je vous ai montrée au début du chapitre… mais vous, vous avez énormément gagné en flexibilité puisque votre code n'est plus recopié 150 fois inutilement.

    Le nombre d'include par page n'est pas limité, par conséquent vous pouvez découper votre code en autant de sous-parties que vous le souhaitez !

    En résumé

    Fatigué(e) de lire sur un écran ? Découvrez ce cours en livre.

    Le principe Les variables

    Les variables

    La pratique Qu'est-ce qu'une variable ?

    Attention, chapitre fondamental !
    Les variables sont un élément indispensable dans tout langage de programmation, et en PHP on n'y échappe pas. Ce n'est pas un truc de programmeurs tordus, c'est au contraire quelque chose qui va nous simplifier la vie. Sans les variables, vous n'irez pas bien loin.

    Les variables nous permettent de retenir temporairement des informations en mémoire. Avec elles, nous allons pouvoir par exemple retenir le pseudonyme du visiteur, effectuer des calculs et bien d'autres choses !

    Qu'est-ce qu'une variable ?

    Les variables Affecter une valeur à une variable

    Rien qu'avec leur nom, vous devez vous dire que c'est quelque chose qui change tout le temps. En effet, le propre d'une variable c'est de pouvoir varier (belle lapalissade, n'est-ce pas ? ;-)). Mais qu'est-ce que c'est concrètement ?

    Une variable, c'est une petite information stockée en mémoire temporairement. Elle n'a pas une grande durée de vie. En PHP, la variable (l'information) existe tant que la page est en cours de génération. Dès que la page PHP est générée, toutes les variables sont supprimées de la mémoire car elles ne servent plus à rien. Ce n'est donc pas un fichier qui reste stocké sur le disque dur mais une petite information temporaire présente en mémoire vive.

    C'est à vous de créer des variables. Vous en créez quand vous en avez besoin pour retenir des informations.

    Un nom et une valeur

    Une variable est toujours constituée de deux éléments :

    Ici, je vous ai donné l'exemple d'une variable appelée age_du_visiteur qui a pour valeur 17.
    On peut modifier quand on veut la valeur de cette variable, faire des opérations dessus, etc. Et quand on en a besoin, on l'appelle (par son nom), et elle nous dit gentiment la valeur qu'elle contient.

    Par exemple, on peut imaginer l'échange suivant :

    Vous allez voir que ces petites bébêtes, même si elles peuvent vous sembler encore un peu floues, seront vraiment indispensables pour votre site en PHP.
    Par exemple, vous pourrez retenir temporairement le nom du visiteur. Dans une variable nom_du_visiteur, vous stockerez son pseudo, mettons « M@teo21 ». Dès que vous en aurez besoin vous pourrez l'utiliser, notamment pour afficher un message de bienvenue personnalisé : « Salut M@teo21 ! Bienvenue sur mon site ! ».

    Les différents types de variables

    Les variables sont capables de stocker différents types d'informations. On parle de types de données. Voici les principaux types à connaître.

    La figure suivante vous résume ce qu'il faut retenir des différents types d'informations qu'est capable de stocker PHP dans les variables.

    Types de données
    Types de données

    Cela devrait vous donner une idée de tout ce qu'est capable de stocker PHP en mémoire. Ces types suffiront pour la création de notre site !

    Maintenant, passons aux choses concrètes. Comment créer une variable et comment afficher ce qu'elle contient ?

    Fatigué(e) de lire sur un écran ? Découvrez ce cours en livre.

    Les variables Affecter une valeur à une variable

    Affecter une valeur à une variable

    Qu'est-ce qu'une variable ? Afficher et concaténer des variables

    Premières manipulations de variables

    Je vous propose de commencer par regarder ce code d'exemple :

    <?php
    $age_du_visiteur = 17;
    ?>

    Avec ce code PHP, on vient en fait de créer une variable :

    .
    Pour le nom, évitez aussi les accents, les cédilles et tout autre symbole : PHP ne les apprécie pas trop…}

    Analysons dans le détail le code qu'on vient de voir.

    Supposons maintenant que l'on écrive ceci :

    <?php
    $age_du_visiteur = 17; // La variable est créée et vaut 17
    $age_du_visiteur = 23; // La variable est modifiée et vaut 23
    $age_du_visiteur = 55; // La variable est modifiée et vaut 55
    ?>

    Que se passera-t-il ? La variable $age_du_visiteur va être créée et prendre pour valeur, dans l'ordre : 17, 23, puis 55. Tout cela va très vite, l'ordinateur étant très rapide vous n'aurez pas le temps de dire « ouf » que tout ce code PHP aura été exécuté.

    Comme tout à l'heure, rien ne s'affiche. Seulement, quelque part dans la mémoire de l'ordinateur, une petite zone nommée age_du_visiteur vient de prendre la valeur 17, puis 23, puis 55.

    Utiliser les types de données

    Vous vous souvenez des types de données dont je vous ai parlé il y a quelques minutes ? Les string, int, float… Voici un exemple de variable pour chacun de ces types.

    Le type string (chaîne de caractères)

    Ce type permet de stocker du texte. Pour cela, vous devez entourer votre texte de guillemets doubles "" ou de guillemets simples '' (attention, ce sont des apostrophes).

    Voici deux exemples, l'un avec des guillemets simples et l'autre avec des guillemets doubles :

    <?php
    $nom_du_visiteur = "Mateo21";
    $nom_du_visiteur = 'Mateo21';
    ?>

    Attention, petit piège : si vous voulez insérer un guillemet simple alors que le texte est entouré de guillemets simples, il faut l'échapper comme on l'a vu précédemment en insérant un antislash devant. Il en va de même pour les guillemets doubles. Voici un exemple pour bien comprendre :

    <?php
    $variable = "Mon \"nom\" est Mateo21";
    $variable = 'Je m\'appelle Mateo21';
    ?>

    En effet, si vous oubliez de mettre un antislash, PHP va croire que c'est la fin de la chaîne et il ne comprendra pas le texte qui suivra (vous aurez en fait un message Parse error).

    Vous pouvez en revanche insérer sans problème des guillemets simples au milieu de guillemets doubles et inversement :

    <?php
    $variable = 'Mon "nom" est Mateo21';
    $variable = "Je m'appelle Mateo21";
    ?>

    La différence est subtile, faites attention. Il y a d'ailleurs une différence plus importante entre les deux types de guillemets dont nous parlerons plus loin.

    Le type int (nombre entier)

    On vient de l'utiliser pour nos exemples précédents. Il suffit tout simplement d'écrire le nombre que vous voulez stocker, sans guillemets.

    <?php
    $age_du_visiteur = 17;
    ?>

    Le type float (nombre décimal)

    Vous devez écrire votre nombre avec un point au lieu d'une virgule. C'est la notation anglaise.

    <?php
    $poids = 57.3;
    ?>

    Le type bool (booléen)

    Pour dire si une variable vaut vrai ou faux, vous devez écrire le mot true ou false sans guillemets autour (ce n'est pas une chaîne de caractères !). Je vous conseille de bien choisir le nom de votre variable pour que l'on comprenne ce que ça signifie. Voyez vous-mêmes :

    <?php
    $je_suis_un_zero = true;
    $je_suis_bon_en_php = false;
    ?>

    Une variable vide avec NULL

    Si vous voulez créer une variable qui ne contient rien, vous devez lui passer le mot-clé NULL (vous pouvez aussi l'écrire en minuscules : null).

    <?php
    $pas_de_valeur = NULL;
    ?>

    Cela sert simplement à indiquer que la variable ne contient rien, tout du moins pour le moment.

    Fatigué(e) de lire sur un écran ? Découvrez ce cours en livre.

    Qu'est-ce qu'une variable ? Afficher et concaténer des variables

    Afficher et concaténer des variables

    Affecter une valeur à une variable Faire des calculs simples

    Nous avons appris à créer des variables et à stocker des informations à l'intérieur. Mais pour le moment, aucun de nos codes source n'affiche quoi que ce soit.

    Afficher le contenu d'une variable

    Vous vous souvenez que l'on peut afficher du texte avec echo ? On peut aussi s'en servir pour afficher la valeur d'une variable !

    <?php
    $age_du_visiteur = 17;
    echo $age_du_visiteur;
    ?>

    Comme vous le voyez, il suffit d'écrire le nom de la variable que vous voulez afficher.

    Au fait, on ne doit pas mettre de guillemets après le echo comme tu nous as appris ?

    Non, quand il s'agit d'une variable on ne met pas de guillemets autour.

    Créez un fichier PHP avec ce code source pour le tester. Inutile de mettre tout le code HTML autour, ce n'est pas grave, ce ne sera pas une « vraie » page HTML valide mais c'est bien suffisant pour nos tests. Vous devriez voir, ainsi que vous le montre la figure suivante, le résultat s'afficher sur un fond blanc dans votre navigateur.

    Affichage d'une variable
    Affichage d'une variable

    Le nombre contenu à l'intérieur de la variable s'affiche dans la page (ici 17).

    La concaténation

    Non, ce n'est pas une insulte. Cela signifie assemblage. ;-)

    En fait, écrire 17 tout seul comme on l'a fait n'est pas très parlant. On aimerait écrire du texte autour pour dire : « Le visiteur a 17 ans ». La concaténation est justement un moyen d'assembler du texte et des variables.

    Comment faire cela ? Les petits malins auront l'idée d'écrire trois instructions echo :

    <?php
    $age_du_visiteur = 17;
    echo "Le visiteur a ";
    echo $age_du_visiteur;
    echo " ans";
    ?>

    Vous pouvez tester, ça fonctionne, comme vous le montre la figure suivante.

    Ajouter du texte autour d'une variable
    Ajouter du texte autour d'une variable

    Mais il y a plus malin. On peut tout faire sur une ligne. Pour cela, il y a deux méthodes et c'est justement maintenant que le fait d'utiliser des guillemets simples ou doubles va faire la différence.

    Concaténer avec des guillemets doubles

    Avec des guillemets doubles, c'est le plus simple. Vous pouvez écrire le nom de la variable au milieu du texte et il sera remplacé par sa valeur.

    Concrètement, essayez ce code :

    <?php
    $age_du_visiteur = 17;
    echo "Le visiteur a $age_du_visiteur ans";
    ?>

    Ça affiche : Le visiteur a 17 ans.

    En effet, lorsque vous utilisez des guillemets doubles, les variables qui se trouvent à l'intérieur sont analysées et remplacées par leur vraie valeur. Ça a le mérite d'être une solution facile à utiliser, mais je vous recommande plutôt celle des guillemets simples, que nous allons voir dès à présent.

    Concaténer avec des guillemets simples

    Si vous écrivez le code précédent entre guillemets simples, vous allez avoir une drôle de surprise :

    <?php
    $age_du_visiteur = 17;
    echo 'Le visiteur a $age_du_visiteur ans'; // Ne marche pas
    ?>

    Ça affiche : Le visiteur a $age_du_visiteur ans.

    Miséricorde ! On ne peut pas concaténer du texte avec des guillemets simples ?

    Eh bien si ! Mais cette fois, il va falloir écrire la variable en dehors des guillemets et séparer les éléments les uns des autres à l'aide d'un point. Regardez :

    <?php
    $age_du_visiteur = 17;
    echo 'Le visiteur a ' . $age_du_visiteur . ' ans';
    ?>

    Cette fois, ça affiche bien comme on voulait : Le visiteur a 17 ans.

    Ça a l'air bien plus compliqué, mais en fait c'est cette méthode qu'utilisent la plupart des programmeurs expérimentés en PHP. En effet, le code est plus lisible, on repère bien la variable alors que tout à l'heure elle était comme « noyée » dans le texte. D'autre part, votre éditeur de texte devrait vous colorer la variable, ce qu'il ne faisait pas pour le code précédent.

    Dorénavant, j'écrirai toutes mes chaînes de caractères entre guillemets simples (à de rares exceptions près) et j'utiliserai la seconde méthode de concaténation qu'on vient de voir. Prenez le temps de vous habituer à l'utiliser et cela finira par devenir complètement naturel pour vous.

    Fatigué(e) de lire sur un écran ? Découvrez ce cours en livre.

    Affecter une valeur à une variable Faire des calculs simples

    Faire des calculs simples

    Afficher et concaténer des variables Les conditions

    On va maintenant faire travailler votre ordinateur, et vous allez voir qu'il encaisse les calculs sans broncher. Eh oui, PHP sait aussi faire des calculs !
    Oh je vous rassure, on ne va pas faire des calculs tordus, juste des additions, des soustractions, des multiplications et des divisions. C'est du niveau de tout le monde, non ? ;-)

    Ici comme vous vous en doutez, on ne va travailler que sur des variables qui contiennent des nombres.

    Les opérations de base : addition, soustraction…

    Les signes à connaître pour faire les quatre opérations de base (vous les trouverez sur votre pavé numérique, à droite du clavier en principe) sont représentés par le tableau suivant.

    Symbole

    Signification

    +

    Addition

    -

    Soustraction

    *

    Multiplication

    /

    Division

    Après, pour vous en servir, ça coule de source. Voici quelques exemples :

    <?php
    $nombre = 2 + 4; // $nombre prend la valeur 6
    $nombre = 5 - 1; // $nombre prend la valeur 4
    $nombre = 3 * 5; // $nombre prend la valeur 15
    $nombre = 10 / 2; // $nombre prend la valeur 5
    
    // Allez on rajoute un peu de difficulté
    $nombre = 3 * 5 + 1; // $nombre prend la valeur 16
    $nombre = (1 + 2) * 2; // $nombre prend la valeur 6
    ?>

    Allez quoi, boudez pas, un peu de calcul mental ça n'a jamais fait de mal à personne.
    Vérifiez mes calculs, comme vous pouvez le voir il n'y a rien de bien compliqué dans tout ça.

    Seulement, il ne faut pas avoir peur de « jongler » avec les variables.
    Voici des calculs avec plusieurs variables :

    <?php
    $nombre = 10;
    $resultat = ($nombre + 5) * $nombre; // $resultat prend la valeur 150
    ?>

    C'est de la pure logique, je ne peux rien vous dire de plus.
    Si vous avez compris ces bouts de code, vous avez tout compris.

    Le modulo

    Il est possible de faire un autre type d'opération un peu moins connu : le modulo. Cela représente le reste de la division entière.

    Par exemple, 6 / 3 = 2 et il n'y a pas de reste. En revanche, 7 / 3 = 2 (car le nombre 3 « rentre » 2 fois dans le nombre 7) et il reste 1. Vous avez fait ce type de calculs à l'école primaire, souvenez-vous !

    Le modulo permet justement de récupérer ce « reste ». Pour faire un calcul avec un modulo, on utilise le symbole %.

    <?php
    $nombre = 10 % 5; // $nombre prend la valeur 0 car la division tombe juste
    $nombre = 10 % 3; // $nombre prend la valeur 1 car il reste 1
    ?>

    Et les autres opérations ?

    Je passe sous silence les opérations plus complexes telles que la racine carrée, l'exponentielle, la factorielle, etc. Toutes ces opérations peuvent être réalisées en PHP mais il faudra passer par ce qu'on appelle des fonctions, une notion que l'on découvrira plus tard. Les opérations basiques que l'on vient de voir sont amplement suffisantes pour la programmation PHP de tous les jours.

    En résumé

    Fatigué(e) de lire sur un écran ? Découvrez ce cours en livre.

    Afficher et concaténer des variables Les conditions

    Les conditions

    Faire des calculs simples La structure de base : if… else

    Ce chapitre est d'une importance capitale. En effet, vous serez très souvent amenés à employer des conditions dans vos pages web PHP.

    À quoi servent les conditions ? On a parfois besoin d'afficher des choses différentes en fonction de certaines données. Par exemple, si c'est le matin, vous voudrez dire « Bonjour » à votre visiteur ; si c'est le soir, il vaudra mieux dire « Bonsoir ».

    C'est là qu'interviennent les conditions. Elles permettent de donner des ordres différents à PHP selon le cas. Pour notre exemple, on lui dirait : Si c'est le matin, affiche « Bonjour ». Sinon, si c'est le soir, affiche « Bonsoir ». Vous allez voir que les conditions constituent vraiment la base pour rendre votre site dynamique, c'est-à-dire pour afficher des choses différentes en fonction du visiteur, de la date, de l'heure de la journée, etc.

    Voilà pourquoi ce chapitre est si important !

    Allez, on y va !

    La structure de base : if… else

    Les conditions Une alternative pratique : switch

    Une condition peut être écrite en PHP sous différentes formes. On parle de structures conditionnelles.
    Celle que je vais vous apprendre à utiliser maintenant est la principale à connaître. Nous en verrons d'autres un peu plus loin.

    Pour étudier la structure if… else, nous allons suivre le plan qui suit.

    1. Les symboles à connaître : il va d'abord falloir retenir quelques symboles qui permettent de faire des comparaisons. Soyez attentifs car ils vous seront utiles pour les conditions.

    2. La structure if… else : c'est le gros morceau. Là vous allez voir comment fonctionne une condition avec if… else. Inutile de vous dire qu'il est indispensable de bien comprendre cela.

    3. Des conditions multiples : on compliquera un peu nos conditions. Vous allez voir en effet qu'on peut utiliser plusieurs conditions à la fois.

    4. Le cas des booléens : nous verrons ensuite qu'il existe une façon particulière d'utiliser les conditions quand on travaille sur des booléens. Si vous ne savez pas ce que sont les booléens, revoyez le chapitre sur les variables.

    5. L'astuce bonus : parce qu'il y a toujours un bonus pour récompenser ceux qui ont bien suivi jusqu'au bout !

    Les symboles à connaître

    Juste avant de commencer, je dois vous montrer les symboles que nous serons amenés à utiliser. Je vais vous faire un petit tableau avec ces symboles et leur signification. Essayez de bien les retenir, ils vous seront utiles !

    Symbole

    Signification

    ==

    Est égal à

    >

    Est supérieur à

    <

    Est inférieur à

    >=

    Est supérieur ou égal à

    <=

    Est inférieur ou égal à

    !=

    Est différent de

    La structure if… else

    Voici ce qu'on doit écrire, dans l'ordre, pour utiliser une condition.

    Puisqu'un exemple vaut toujours mieux qu'un long discours :

    <?php
    $age = 8;
    
    if ($age <= 12)
    {
        echo "Salut gamin !";
    }
    ?>

    Ici, on demande à PHP : si la variable $age est inférieure ou égale à 12, affiche « Salut gamin ! ».

    Vous remarquerez que dans la quasi-totalité des cas, c'est sur une variable qu'on fait la condition.
    Dans notre exemple, on travaille sur la variable $age. Ce qui compte ici, c'est qu'il y a deux possibilités : soit la condition est remplie (l'âge est inférieur ou égal à 12 ans) et alors on affiche quelque chose  ; sinon, eh bien on saute les instructions entre accolades, on ne fait rien.

    Bon, on peut quand même améliorer notre exemple. On va afficher un autre message si l'âge est supérieur à 12 ans :

    <?php
    $age = 8;
     
    if ($age <= 12) // SI l'âge est inférieur ou égal à 12
    {
        echo "Salut gamin ! Bienvenue sur mon site !<br />";
        $autorisation_entrer = "Oui";
    }
    else // SINON
    {
        echo "Ceci est un site pour enfants, vous êtes trop vieux pour pouvoir  entrer. Au revoir !<br />";
        $autorisation_entrer = "Non";
    }
     
    echo "Avez-vous l'autorisation d'entrer ? La réponse est : $autorisation_entrer";
    ?>

    Bon : comment marche ce code ? Tout d'abord, j'ai mis plusieurs instructions entre accolades.
    Ensuite, vous avez remarqué que j'ai ajouté le mot else (« sinon »). En clair, on demande : Si l'âge est inférieur ou égal à 12 ans, fais ceci, sinon fais cela.

    Essayez ce bout de code chez vous, en vous amusant à modifier la valeur de $age (sur la première ligne). Vous allez voir que le message qui s'affiche change en fonction de l'âge que vous indiquez !

    Bien entendu, vous mettez les instructions que vous voulez entre accolades. Ici par exemple, j'ai donné une valeur différente à la variable $autorisation_entrer après avoir affiché un message, valeur qui pourrait nous servir par la suite :

    <?php
    if ($autorisation_entrer == "Oui") // SI on a l'autorisation d'entrer
    {
        // instructions à exécuter quand on est autorisé à entrer
    }
    elseif ($autorisation_entrer == "Non") // SINON SI on n'a pas l'autorisation d'entrer
    {
        // instructions à exécuter quand on n'est pas autorisé à entrer
    }
    else // SINON (la variable ne contient ni Oui ni Non, on ne peut pas agir)
    {
        echo "Euh, je ne connais pas ton âge, tu peux me le rappeler s'il te plaît ?";
    }
    ?>

    Ouh là, ça commence à se compliquer un tantinet, n'est-ce pas ?

    La principale nouveauté ici, c'est le mot-clé elseif qui signifie « sinon si ». Dans l'ordre, PHP rencontre les conditions suivantes :

    1. si $autorisation_entrer est égale à « Oui », tu exécutes ces instructions…

    2. sinon si $autorisation_entrer est égale à « Non », tu exécutes ces autres instructions…

    3. sinon, tu redemandes l'âge pour savoir si on a ou non l'autorisation d'entrer.

    Le cas des booléens

    Si vous regardez bien le dernier code source (avec $autorisation_entrer), vous ne trouvez pas qu'il serait plus adapté d'utiliser des booléens ?

    On a parlé des booléens dans le chapitre sur les variables. Vous vous souvenez ?
    Ce sont ces variables qui valent soit true (vrai) soit false (faux). Eh bien, les booléens sont particulièrement utiles avec les conditions ! Voici comment on teste une variable booléenne :

    <?php
    if ($autorisation_entrer == true)
    {
        echo "Bienvenue petit Zéro. :o)";
    }
    elseif ($autorisation_entrer == false)
    {
        echo "T'as pas le droit d'entrer !";
    }
    ?>

    Voilà, jusque-là rien d'extraordinaire. Vous avez vu que je n'ai pas mis de guillemets pour true et false, comme je vous l'ai dit dans le chapitre sur les variables.

    Mais un des avantages des booléens, c'est qu'ils sont particulièrement adaptés aux conditions.
    Pourquoi ? Parce qu'en fait vous n'êtes pas obligés d'ajouter le == true. Quand vous travaillez sur une variable booléenne, PHP comprend très bien ce que vous avez voulu dire :

    <?php
    if ($autorisation_entrer)
    {
        echo "Bienvenue petit Zéro. :o)";
    }
    else
    {
        echo "T'as pas le droit d'entrer !";
    }
    ?>

    PHP comprend qu'il faut qu'il vérifie si $autorisation_entrer vaut true. Avantages :

    En effet, si vous « lisez » la première ligne, ça donne : « SI on a l'autorisation d'entrer… ».
    C'est donc un raccourci à connaître quand on travaille sur des booléens.

    Oui mais ta méthode « courte » ne marche pas si on veut vérifier si le booléen vaut faux. Comment on fait avec la méthode courte, hein ?

    Il y a un symbole qui permet de vérifier si la variable vaut false : le point d'exclamation (!). On écrit :

    <?php
    if (! $autorisation_entrer)
    {
    
    }
    ?>

    C'est une autre façon de faire. Si vous préférez mettre if ($autorisation_entrer == false) c'est tout aussi bien, mais la méthode « courte » est plus lisible.

    Des conditions multiples

    Ce qu'on va essayer de faire, c'est de poser plusieurs conditions à la fois. Pour cela, on aura besoin de nouveaux mots-clés. Voici les principaux à connaître :

    Mot-clé

    Signification

    Symbole équivalent

    AND

    Et

    &&

    OR

    Ou

    ||

    La première colonne contient le mot-clé en anglais, la troisième son équivalent en symbole. Les deux fonctionnent aussi bien, mais je vous recommande d'utiliser le mot-clé de préférence, c'est plus « facile » à lire (j'espère que vous connaissez un peu l'anglais, quand même). Servez-vous de ces mots-clés pour mettre plusieurs conditions entre les parenthèses. Voici un premier exemple :

    <?php
    if ($age <= 12 AND $sexe == "garçon")
    {
        echo "Bienvenue sur le site de Captain Mégakill !";
    }
    elseif ($age <= 12 AND $sexe == "fille")
    {
        echo "C'est pas un site pour les filles ici, retourne jouer à la Barbie !";
    }
    ?>

    C'est tout simple en fait et ça se comprend très bien : si l'âge est inférieur ou égal à 12 ans et que c'est un garçon, on lui permet d'accéder au site de son super-héros préféré.
    Sinon, si c'est une fille dont l'âge est inférieur ou égal à 12 ans, on l'envoie gentiment balader (hum, hum, m'accusez pas de sexisme hein, c'était juste pour l'exemple).

    Bon allez, un dernier exemple avec OR pour que vous l'ayez vu au moins une fois, et on arrête là.

    <?php
    if ($sexe == "fille" OR $sexe == "garçon")
    {
        echo "Salut Terrien !";
    }
    else
    {
        echo "Euh, si t'es ni une fille ni un garçon, t'es quoi alors ?";
    }
    ?>

    L'astuce bonus

    Avec les conditions, il y a une astuce à connaître.
    Sachez que les deux codes ci-dessous donnent exactement le même résultat :

    <?php
    if ($variable == 23)
    {
        echo '<strong>Bravo !</strong> Vous avez trouvé le nombre mystère !';
    }
    ?>
    <?php
    if ($variable == 23)
    {
    ?>
    <strong>Bravo !</strong> Vous avez trouvé le nombre mystère !
    <?php
    }
    ?>

    Comme vous le voyez, dans la seconde colonne on n'a pas utilisé de echo. En effet, il vous suffit d'ouvrir l'accolade ({), puis de fermer la balise PHP (?>), et vous pouvez mettre tout le texte à afficher que vous voulez en HTML !
    Rudement pratique quand il y a de grosses quantités de texte à afficher, et aussi pour éviter d'avoir à se prendre la tête avec les antislashs devant les guillemets (" ou ').
    Il vous faudra toutefois penser à refermer l'accolade après (à l'intérieur d'une balise PHP, bien entendu).

    Et après ça, ma foi, il n'y a rien de particulier à savoir. Vous allez rencontrer des conditions dans la quasi-totalité des exemples que je vous donnerai par la suite.
    Vous ne devriez pas avoir de problèmes normalement pour utiliser des conditions, il n'y a rien de bien difficile. Contentez-vous de reprendre le schéma que je vous ai donné pour la structure if… else et de l'appliquer à votre cas. Nous aurons d'ailleurs bientôt l'occasion de pratiquer un peu, et vous verrez que les conditions sont souvent indispensables.

    Fatigué(e) de lire sur un écran ? Découvrez ce cours en livre.

    Les conditions Une alternative pratique : switch

    Une alternative pratique : switch

    La structure de base : if… else Les ternaires : des conditions condensées

    En théorie, les structures à base de if… elseif… else que je viens de vous montrer suffisent pour traiter n'importe quelle condition.

    Mais alors, pourquoi se compliquer la vie avec une autre structure ?

    Pour vous faire comprendre l'intérêt de switch, je vais vous donner un exemple un peu lourd avec les if et elseif que vous venez d'apprendre :

    <?php
    if ($note == 0)
    {
        echo "Tu es vraiment un gros Zéro !!!";
    }
    
    elseif ($note == 5)
    {
        echo "Tu es très mauvais";
    }
    
    elseif ($note == 7)
    {
        echo "Tu es mauvais";
    }
    
    elseif ($note == 10)
    {
        echo "Tu as pile poil la moyenne, c'est un peu juste…";
    }
    
    elseif ($note == 12)
    {
        echo "Tu es assez bon";
    }
    
    elseif ($note == 16)
    {
        echo "Tu te débrouilles très bien !";
    }
    
    elseif ($note == 20)
    {
        echo "Excellent travail, c'est parfait !";
    }
    
    else
    {
        echo "Désolé, je n'ai pas de message à afficher pour cette note";
    }
    ?>

    Comme vous le voyez, c'est lourd, long, et répétitif. Dans ce cas, on peut utiliser une autre structure plus souple : c'est switch.

    Voici le même exemple avec switch (le résultat est le même, mais le code est plus adapté) :

    <?php
    $note = 10;
    
    switch ($note) // on indique sur quelle variable on travaille
    { 
        case 0: // dans le cas où $note vaut 0
            echo "Tu es vraiment un gros Zér0 !!!";
        break;
        
        case 5: // dans le cas où $note vaut 5
            echo "Tu es très mauvais";
        break;
        
        case 7: // dans le cas où $note vaut 7
            echo "Tu es mauvais";
        break;
        
        case 10: // etc. etc.
            echo "Tu as pile poil la moyenne, c'est un peu juste…";
        break;
        
        case 12:
            echo "Tu es assez bon";
        break;
        
        case 16:
            echo "Tu te débrouilles très bien !";
        break;
        
        case 20:
            echo "Excellent travail, c'est parfait !";
        break;
        
        default:
            echo "Désolé, je n'ai pas de message à afficher pour cette note";
    }
    ?>

    Testez donc ce code !
    Essayez de changer la note (dans la première instruction) pour voir comment PHP réagit ! Et si vous voulez apporter quelques modifications à ce code (vous allez voir qu'il n'est pas parfait), n'hésitez pas, ça vous fera de l'entraînement !

    Tout d'abord, il y a beaucoup moins d'accolades (elles marquent seulement le début et la fin du switch).

    case signifie « cas ». Dans le switch, on indique au début sur quelle variable on travaille (ici $note). On dit à PHP : Je vais analyser la valeur de $note. Après, on utilise des case pour analyser chaque cas (case 0, case 10, etc.). Cela signifie  : Dans le cas où la valeur est 0… Dans le cas où la valeur est 10…

    Avantage : on n'a plus besoin de mettre le double égal ! Défaut : ça ne marche pas avec les autres symboles (< > <= >= !=). En clair, le switch ne peut tester que l'égalité.

    Il y a cependant une chose importante à savoir : supposons dans notre exemple que la note soit de 10. PHP va lire : case 0 ? Non. Je saute. case 5 ? Non plus. Je saute. case 7 ? Non plus. Je saute. case 10 ? Oui, j'exécute les instructions. Mais contrairement aux elseif, PHP ne s'arrête pas là et continue à lire les instructions des case qui suivent ! case 12, case 16, etc.

    Pour empêcher cela, utilisez l'instruction break;. L'instruction break demande à PHP de sortir du switch. Dès que PHP tombe sur break, il sort des accolades et donc il ne lit pas les case qui suivent. En pratique, on utilise très souvent un break car sinon, PHP lit des instructions qui suivent et qui ne conviennent pas.
    Essayez d'enlever les break dans le code précédent, vous allez comprendre pourquoi ils sont indispensables !

    Quand doit-on choisir if, et quand doit-on choisir switch ?

    C'est surtout un problème de présentation et de clarté. Pour une condition simple et courte, on utilise le if, et quand on a une série de conditions à analyser, on préfère utiliser switch pour rendre le code plus clair.

    Fatigué(e) de lire sur un écran ? Découvrez ce cours en livre.

    La structure de base : if… else Les ternaires : des conditions condensées

    Les ternaires : des conditions condensées

    Une alternative pratique : switch Les boucles

    Il existe une autre forme de condition, beaucoup moins fréquente, mais que je vous présente quand même car vous pourriez un jour ou l'autre tomber dessus. Il s'agit de ce qu'on appelle les ternaires.

    Un ternaire est une condition condensée qui fait deux choses sur une seule ligne :

    Prenons cet exemple à base de if… else qui met un booléen $majeur à vrai ou faux selon l'âge du visiteur :

    <?php
    $age = 24;
    
    if ($age >= 18)
    {
    	$majeur = true;
    }
    else
    {
    	$majeur = false;
    }
    ?>

    On peut faire la même chose en une seule ligne grâce à une structure ternaire :

    <?php
    $age = 24;
    
    $majeur = ($age >= 18) ? true : false;
    ?>

    Ici, tout notre test précédent a été fait sur une seule ligne !

    La condition testée est $age >= 18. Si c'est vrai, alors la valeur indiquée après le point d'interrogation (ici true) sera affectée à la variable $majeur. Sinon, c'est la valeur qui suit le symbole « deux-points » qui sera affectée à $majeur.

    C'est un peu tordu mais ça marche.
    Si vous n'utilisez pas ce type de condition dans vos pages web, je ne vous en voudrai pas. Il faut avouer que les ternaires sont un peu difficiles à lire car ils sont très condensés. Mais sachez les reconnaître et les comprendre si vous en rencontrez un jour en lisant le code source de quelqu'un d'autre.

    En résumé

    Fatigué(e) de lire sur un écran ? Découvrez ce cours en livre.

    Une alternative pratique : switch Les boucles

    Les boucles

    Les ternaires : des conditions condensées Une boucle simple : while

    Dans la série des éléments de base de PHP à connaître absolument, voici les boucles ! Répéter des instructions, ça, l'ordinateur sait faire (et en plus, il ne bronche jamais) !

    Imaginez que vous êtes en train de créer le forum de votre site. Sur une page, on affiche par exemple une trentaine de messages. Il serait bien trop long et répétitif de dire « Affiche le message 1 et le nom de son auteur », « Affiche le message 2 et le nom de son auteur », « Affiche le message 3 et le nom de son auteur », etc. Pour éviter d'avoir à faire cela, on peut utiliser un système de boucle qui nous permettra de dire une seule fois : « Affiche 30 messages et le nom de leur auteur à chaque fois ».

    Bien entendu, nous n'allons pas pouvoir apprendre à créer le forum de votre site dans ce chapitre, il est encore trop tôt. Néanmoins, prenez bien le temps de comprendre le fonctionnement des boucles car nous en aurons besoin tout au long de ce cours. Ce n'est pas bien compliqué, vous allez voir !

    Une boucle simple : while

    Les boucles Une boucle plus complexe : for

    Qu'est-ce qu'une boucle ? C'est une structure qui fonctionne sur le même principe que les conditions (if… else). D'ailleurs, vous allez voir qu'il y a beaucoup de similitudes avec le chapitre sur les conditions.
    Concrètement, une boucle permet de répéter des instructions plusieurs fois. En clair, c'est un gain de temps, c'est très pratique, et bien souvent indispensable.

    On peut si vous voulez présenter le principe dans le schéma suivante.

    Principe de fonctionnement d'une boucle
    Principe de fonctionnement d'une boucle

    Voilà ce qui se passe dans une boucle :

    1. comme d'habitude, les instructions sont d'abord exécutées dans l'ordre, de haut en bas (flèche rouge) ;

    2. à la fin des instructions, on retourne à la première (flèche verte) ;

    3. on recommence à lire les instructions dans l'ordre (flèche rouge) ;

    4. et on retourne à la première(flèche verte) ;

    5. etc., etc.

    Le seul hic dans ce schéma, c'est que ça ne s'arrête jamais ! Les instructions seraient réexécutées à l'infini !
    C'est pour cela que, quel que soit le type de boucle (while ou for), il faut indiquer une condition. Tant que la condition est remplie, les instructions sont réexécutées. Dès que la condition n'est plus remplie, on sort enfin de la boucle (ouf !).

    Voici comment faire avec une boucle simple : while.

    <?php
    while ($continuer_boucle == true)
    {
        // instructions à exécuter dans la boucle
    }
    ?>

    while peut se traduire par « tant que ». Ici, on demande à PHP : TANT QUE $continuer_boucle est vrai, exécuter ces instructions.

    Les instructions qui sont répétées en boucle se trouvent entre les accolades { et }. Mais bon là je ne vous apprends rien, vous commencez à avoir l'habitude de voir des accolades de partout. ;-)

    Ce n'est pas beaucoup plus compliqué que ça, il n'y a guère plus de choses à savoir. Cependant, je vais quand même vous montrer un ou deux exemples d'utilisation de boucles, pour que vous voyiez à quoi ça peut servir…

    Pour notre premier exemple, on va supposer que vous avez été punis et que vous devez recopier 100 fois « Je ne dois pas regarder les mouches voler quand j'apprends le PHP. ».
    Avant, il fallait prendre son mal en patience et ça prenait des heuuuures… Maintenant, avec PHP, on va faire ça en un clin d'œil !

    Regardez ce code :

    <?php
    $nombre_de_lignes = 1;
    
    while ($nombre_de_lignes <= 100)
    {
        echo 'Je ne dois pas regarder les mouches voler quand j\'apprends le PHP.<br />';
        $nombre_de_lignes++; // $nombre_de_lignes = $nombre_de_lignes + 1
    }
    ?>

    Essayer !

    La boucle pose la condition : TANT QUE $nombre_de_lignes est inférieur ou égal à 100.
    Dans cette boucle, il y a deux instructions :

    Chaque fois qu'on fait une boucle, la valeur de la variable augmente : 1, 2, 3, 4… 99, 100… Dès que la variable atteint 101, on arrête la boucle. Et voilà, on a écrit 100 lignes en un clin d'œil.
    Si la punition avait été plus grosse, pas de problème ! Il aurait suffi de changer la condition (par exemple, mettre « TANT QUE c'est inférieur ou égal à 500 » pour l'écrire 500 fois).

    Nous venons donc de voir comment afficher une phrase plusieurs centaines de fois sans effort.

    Mais est-ce vraiment utile ? On n'a pas besoin de faire ça sur un site web !

    Pas vraiment, mais comme je vous l'ai dit en introduction, nous apprenons ici des techniques de base que l'on va pouvoir réutiliser dans les prochains chapitres de ce cours. Imaginez à la fin que ce système de boucle va vous permettre de demander à PHP d'afficher d'une seule traite tous les messages de votre forum. Bien sûr, il vous faudra d'autres connaissances pour y parvenir, mais sans les boucles vous n'auriez rien pu faire !

    Je vous demande pour le moment de pratiquer et de comprendre comment ça marche.

    Bon, un autre exemple pour le plaisir ?
    On peut écrire de la même manière une centaine de lignes, mais chacune peut être différente (on n'est pas obligés d'écrire la même chose à chaque fois).
    Cet exemple devrait vous montrer que la valeur de la variable augmente à chaque passage dans la boucle :

    <?php
    $nombre_de_lignes = 1;
    
    while ($nombre_de_lignes <= 100)
    {
        echo 'Ceci est la ligne n°' . $nombre_de_lignes . '<br />';
        $nombre_de_lignes++;
    }
    ?>

    Essayer !

    Voilà, c'est tout bête, et cet exemple ressemble beaucoup au précédent. La particularité, là, c'est qu'on affiche à chaque fois la valeur de $nombre_de_lignes (ça vous permet de voir que sa valeur augmente petit à petit).

    Fatigué(e) de lire sur un écran ? Découvrez ce cours en livre.

    Les boucles Une boucle plus complexe : for

    Une boucle plus complexe : for

    Une boucle simple : while Les fonctions

    Mais non, n'ayez pas peur voyons.
    Il ne vous arrivera rien de mal : ici le mot « complexe » ne veut pas dire « compliqué ».

    for est un autre type de boucle, dans une forme un peu plus condensée et plus commode à écrire, ce qui fait que for est assez fréquemment utilisé.

    Cependant, sachez que for et while donnent le même résultat et servent à la même chose : répéter des instructions en boucle. L'une peut paraître plus adaptée que l'autre dans certains cas, cela dépend aussi des goûts.

    Alors, comment ça marche un for ? Ça ressemble beaucoup au while, mais c'est la première ligne qui est un peu particulière. Pour que vous voyiez bien la différence avec le while, je reprends exactement l'exemple précédent, mais cette fois avec un for :

    <?php
    for ($nombre_de_lignes = 1; $nombre_de_lignes <= 100; $nombre_de_lignes++)
    {
        echo 'Ceci est la ligne n°' . $nombre_de_lignes . '<br />';
    }
    ?>

    Que de choses dans une même ligne !

    Bon, vous vous en doutez, je ne vais vous expliquer que la ligne du for, le reste n'ayant pas changé.

    Après le mot for, il y a des parenthèses qui contiennent trois éléments, séparés par des points-virgules ;.

    Décrivons chacun de ces éléments.

    Les deux derniers codes donnent donc exactement le même résultat. Le for fait la même chose que le while, mais rassemble sur une seule ligne tout ce qu'il faut savoir sur le fonctionnement de la boucle.

    Comment savoir lequel prendre quand je dois choisir entre un while et un for ?

    La boucle while est plus simple et plus flexible : on peut faire tous les types de boucles avec mais on peut oublier de faire certaines étapes comme l'incrémentation de la variable.
    En revanche, for est bien adapté quand on doit compter le nombre de fois que l'on répète les instructions et il permet de ne pas oublier de faire l'incrémentation pour augmenter la valeur de la variable !

    Si vous hésitez entre les deux, il suffit simplement de vous poser la question suivante : « Est-ce que je sais d'avance combien de fois je veux que mes instructions soient répétées ? ».
    Si la réponse est oui, alors la boucle for est tout indiquée. Sinon, alors il vaut mieux utiliser la boucle while.

    En résumé

    Fatigué(e) de lire sur un écran ? Découvrez ce cours en livre.

    Une boucle simple : while Les fonctions

    Les fonctions

    Une boucle plus complexe : for Qu'est-ce qu'une fonction ?

    En PHP, on n'aime pas avoir à répéter le même code. Pour pallier ce problème, nous avons découvert les boucles, qui permettent d'exécuter des instructions un certain nombre de fois. Ici nous allons découvrir un autre type de structure indispensable pour la suite : les fonctions.

    Comme les boucles, les fonctions permettent d'éviter d'avoir à répéter du code PHP que l'on utilise souvent. Mais alors que les boucles sont de bêtes machines tout juste capables de répéter deux cents fois la même chose, les fonctions sont des robots « intelligents » qui s'adaptent en fonction de ce que vous voulez faire et qui automatisent grandement la plupart des tâches courantes.

    Qu'est-ce qu'une fonction ?

    Les fonctions Les fonctions prêtes à l'emploi de PHP

    Une fonction est une série d'instructions qui effectue des actions et qui retourne une valeur. En général, dès que vous avez besoin d'effectuer des opérations un peu longues dont vous aurez à nouveau besoin plus tard, il est conseillé de vérifier s'il n'existe pas déjà une fonction qui fait cela pour vous. Et si la fonction n'existe pas, vous avez la possibilité de la créer.

    Imaginez que les fonctions sont des robots comme dans la figure suivante.

    Une fonction est comme un robot
    Une fonction est comme un robot

    Vous ne savez pas ce qui se passe à l'intérieur de ce robot, mais vous pouvez appuyer sur un bouton pour lui demander de faire quelque chose de précis. Avec les fonctions, c'est le même principe !

    Dialogue avec une fonction

    Voici le genre de dialogue qu'on peut avoir avec une fonction :

    La fonction effectue les calculs demandés puis répond :

    On donne en entrée à la fonction un paramètre sur lequel elle va faire des calculs (ici, la longueur de l'arête : 4) et la fonction nous retourne en sortie le résultat : 64. Voyez la figure suivante.

    Calcul du cube
    Calcul du cube

    Grâce à la fonction, vous n'avez pas eu besoin de vous souvenir de la manière dont on calcule le volume d'un cube. Bon ici c'était assez simple (il suffisait de faire $4*4*4$), mais vous serez souvent amenés à faire des opérations de plus en plus complexes et les fonctions vous permettront de ne pas avoir à vous soucier des détails des calculs.

    Si vous aviez eu à déterminer le volume du cube une seule fois, vous auriez pu chercher la formule dans un livre (si vous ne vous en souveniez pas) et écrire le calcul à la main. Mais si vous aviez à le faire 5 fois ? 10 fois ? 100 fois ?

    En quoi est-ce différent des boucles ? Avec les boucles on peut faire répéter le même code plusieurs fois aussi !

    Oui, mais les fonctions sont capables de s'adapter en fonction des informations que vous leur envoyez. Par exemple dans notre cas, il suffit de transmettre la longueur de l'arête du cube à notre fonction pour qu'elle nous retourne le résultat. Ces informations que l'on donne en entrée à la fonction sont appelées paramètres (un mot à connaître !).

    Les fonctions ne servent qu'à faire des calculs mathématiques ? Je veux juste créer un site web, pas faire des maths !

    J'ai choisi un exemple mathématique ici parce que je le trouve simple et parlant, mais dans la pratique on ne passe pas son temps à calculer des logarithmes et des exponentielles quand on crée un site web, je suis d'accord.

    Concrètement, les fonctions peuvent permettre de récupérer des informations comme la date et l'heure actuelles, de crypter des données, d'envoyer des e-mails, de faire des recherches dans du texte, et bien d'autres choses encore !

    Les fonctions en PHP

    Nous avons jusqu'ici imaginé le dialogue avec une fonction représentée par un robot, ce qui n'est pas très intéressant.
    Revenons aux choses sérieuses et concrètes.

    Appeler une fonction

    En PHP, comment appelle-t-on une fonction ? Par son nom, pardi ! Par exemple :

    <?php
    calculCube();
    ?>

    Comme vous le voyez, j'ai simplement écrit le nom de la fonction, suivi de parenthèses vides, puis de l'inévitable point-virgule. En faisant cela, j'appelle la fonction calculCube mais je ne lui envoie aucune information, aucun paramètre.

    Certaines fonctions peuvent fonctionner sans paramètres, mais elles sont assez rares. Dans le cas de calculCube, ça n'a pas de sens de l'appeler sans lui donner la longueur de l'arête du cube pour faire le calcul !

    Si on veut lui envoyer un paramètre (un nombre, une chaîne de caractères, un booléen...), il faut l'écrire entre les parenthèses :

    <?php
    calculCube(4);
    ?>

    Ainsi, calculCube saura qu'elle doit travailler avec le nombre 4.

    Souvent, les fonctions acceptent plusieurs paramètres. Vous devez dans ce cas les séparer par des virgules :

    <?php
    fonctionImaginaire(17, 'Vert', true, 41.7);
    ?>

    Cette fonction recevra quatre paramètres : 17, le texte « Vert », le booléen vrai et le nombre 41,7.

    Récupérer la valeur de retour de la fonction

    Maintenant que nous savons appeler une fonction et même lui envoyer plusieurs paramètres, il faut récupérer ce qu'elle nous retourne si toutefois elle retourne quelque chose. Il y a en effet deux types de fonctions :

    Si la fonction ne retourne aucune valeur, il n'y a rien de plus à faire que dans les codes précédents. La fonction est appelée, fait son travail, et on ne lui demande rien de plus.

    En revanche, si la fonction retourne une valeur (comme ça devrait être le cas pour calculCube), on la récupère dans une variable, comme ceci :

    <?php
    $volume = calculCube(4);
    ?>

    Sur une ligne comme celle-ci, il se passe en fait les deux choses suivantes (dans l'ordre, et de droite à gauche) :

    1. la fonction calculCube est appelée avec le paramètre 4 ;

    2. le résultat renvoyé par la fonction (lorsqu'elle a terminé) est stocké dans la variable $volume.

    La variable $volume aura donc pour valeur 64 après l'exécution de cette ligne de code !