• 8 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

Ce cours existe en livre papier.

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 20/12/2023

Travaillez avec une base de données

Pour l'instant, vous avez découvert le fonctionnement du langage PHP, mais vous ne vous sentez probablement pas encore capable de créer de vrais sites web avec ce que vous avez appris. C'est parfaitement normal, car il vous manque un élément crucial : la base de données.

Certes, vous connaissez les variables, mais celles-ci restent en mémoire seulement le temps de la génération de la page. Vous pourriez aussi écrire vos données dans des fichiers, mais cela devient vite très compliqué, dès que vous avez beaucoup de données à enregistrer.

Or, il va bien falloir stocker quelque part la liste de vos membres, les recettes, les commentaires sous les recettes… Les bases de données constituent le meilleur moyen de faire cela de façon simple et propre. Nous allons les étudier durant toute cette partie du cours !

Découvrez langage SQL et les bases de données

Un peu comme un fichier texte ?

Non, pas vraiment. Ce qui est très important ici, c'est que ces informations sont toujours organisées. Et c'est ça qui fait que la BDD est si pratique : c'est un moyen simple de ranger des informations.

Et si je préfère rester désordonné ? Si je n'ai pas envie de classer mes informations ?
Est-on obligé de classer chaque information qu'on enregistre ?

C'est un peu ce que je me disais au début… Classer certaines choses, d'accord, mais il me semblait que je n'en aurais besoin que très rarement.

Grave erreur ! Vous allez le voir : 99 % du temps, on range ses informations dans une base de données. Pour le reste, on peut les enregistrer dans un fichier comme on a appris à le faire… mais quand on a goûté aux bases de données, on peut difficilement s'en passer ensuite !

Imaginez par exemple une armoire, dans laquelle chaque dossier est à sa place.

Quand tout est à sa place, il est beaucoup plus facile de retrouver un objet, n'est-ce pas ? Eh bien là, c'est pareil : en classant les informations que vous collectez (concernant vos visiteurs, par exemple), il vous sera très facile de récupérer plus tard ce que vous cherchez.

Donnez les ordres au SGBD en langage SQL

Vous allez devoir communiquer avec le SGBD pour lui donner l'ordre de récupérer ou d'enregistrer des données. Pour lui "parler", on utilise le langage SQL.

La bonne nouvelle, c'est que le langage SQL est un standard, c'est-à-dire que quel que soit le SGBD que vous utilisez, vous vous servirez du langage SQL. La mauvaise, c'est qu'il y a en fait quelques petites variantes d'un SGBD à l'autre, mais cela concerne généralement les commandes les plus avancées.

Comme vous vous en doutez, il va falloir apprendre le langage SQL pour travailler avec les bases de données. Ce langage n'a rien à voir avec le PHP, mais nous allons impérativement en avoir besoin.

Voici un exemple de commande en langage SQL, pour vous donner une idée :

SELECT id, auteur, message, datemsg FROM livreor ORDER BY datemsg DESC

Le principal objectif de cette partie du cours sera d'apprendre les instructions nécessaires à écrire en PHP pour effectuer des requêtes en base de données, et les bases du langage SQL.

Comprenez comment PHP fait la jonction entre vous et MySQL

Pour compliquer un petit peu l'affaire (sinon, ce n'est pas rigolo), on ne va pas pouvoir parler à MySQL directement. Eh non, seul PHP peut le faire !

C'est donc PHP qui va faire l'intermédiaire entre vous et MySQL. On devra demander à PHP : "Va dire à MySQL de faire ceci".

Je crois qu'un petit schéma ne serait pas du luxe :

Ce schéma montre le schéma que l'on a vu au début du cours : la relation cleitn serveur. Sauf que celui-ci est compléter par la relation entre PHP et MySQL : le serveur utilise PHP pour générer la page mais demande d'abord à MySQL de vérifier et d
Communication entre PHP et MySQL

Voici ce qui peut se passer lorsque le serveur a reçu une demande d'un client qui veut poster un message :

  1. Le serveur utilise toujours PHP, il lui fait donc passer le message.

  2. PHP effectue les actions demandées et se rend compte qu'il a besoin de MySQL. En effet, le code PHP contient à un endroit "Va demander à MySQL d'enregistrer ce message". Il fait donc passer le travail à MySQL.

  3. MySQL fait le travail que PHP lui a soumis et lui répond "OK, c'est bon !".

  4. PHP renvoie au serveur que MySQL a bien fait ce qui lui était demandé.

Maintenant que nous avons fait les présentations, il va falloir découvrir comment est organisée une base de données. Bien en comprendre l'organisation est en effet absolument indispensable.

Structurez votre base de données

Avec les bases de données, il faut utiliser un vocabulaire précis. Heureusement, vous ne devriez pas avoir trop de mal à vous en souvenir, vu qu'on va se servir d'une image : celle d'une armoire. Écoutez-moi attentivement et n'hésitez pas à lire lentement, plusieurs fois si c'est nécessaire.

Je vous demande d'imaginer ce qui suit.

  • L'armoire est appelée "la base" dans le langage SQL. C'est le gros meuble dans lequel les secrétaires ont l'habitude de classer les informations.

  • Dans une armoire, il y a plusieurs tiroirs. Un tiroir, en SQL, c'est ce qu'on appelle "une table". Chaque tiroir contient des données différentes. Par exemple, on peut imaginer un tiroir qui contient les pseudonymes et informations sur vos visiteurs, un autre qui contient les messages postés sur votre forum, etc.

  • Mais que contient une table ? C'est là que sont enregistrées les données, sous la forme d'un tableau. Dans ce tableau, les colonnes sont appelées des "champs", et les lignes sont appelées des "entrées".

Une table est donc représentée sous la forme d'un tableau.

Par exemple, le tableau suivant vous montre à quoi peut ressembler le contenu d'une table appelée « Utilisateurs » :

Number

Full name

Email

Age

Password

1

Mathieu Nebra

mathieu.nebra@exemple.com

34

P4ssW0rd

2

Laurène Castor

laurene.castor@exemple.com

28

jm_les_cookies

3

Mickaël Andrieu

mickael.andrieu@exemple.com

34

s3cr3t

4

Vous

vous@exemple.com

29

123456

 

Ce tableau représente le contenu d'une table (c'est-à-dire le tiroir de l'armoire).

Chaque ligne est une entrée. Ici, il y en a quatre, mais une table peut très bien contenir 100, 1 000, ou même 100 000 entrées.

Et pour finir, voici l'indispensable schéma pour que tout ça soit clair :

Organisation schématique d'une base de données MySQL : une base de données est constituée de plusieurs tables. Chaque table contient des entrées classées par champs.
Organisation d'une base de données MySQL

La base de données contient plusieurs tables (on peut en mettre autant que l'on veut à l'intérieur).

Pour vous donner quelques exemples concrets, voici le nom des tables que vous allez devoir créer pour compléter votre site de partage de recettes :

  • users : stocke tous les comptes utilisateur de votre site ;

  • recipes : stocke toutes les recettes de votre site ;

  • comments : stocke tous les commentaires liés aux recettes.

Enregistrez les données

Avant de terminer le chapitre, voici une question que l'on se pose fréquemment, quand on lit ce genre de chapitre sur les bases de données pour la première fois.

Ils sont bien jolis ces tableaux et ces schémas, ces bases, ces champs… Mais je vois pas ce que c'est concrètement, moi ! Où est-ce que MySQL enregistre les données ?

En fait, tout ce que je viens de vous montrer, c'est une façon de « visualiser » la chose. Il faut que vous imaginiez que la base de données gère les informations sous forme de tableaux, parce que c'est la meilleure représentation qu'on puisse s'en faire.

Mais concrètement, quand MySQL enregistre des informations, il les écrit bien quelque part. Oui, comme tout le monde, il les enregistre dans des fichiers !

Ces fichiers sont quelque part sur votre disque dur, mais il ne faut jamais les ouvrir et encore moins les modifier directement. Il faut toujours parler avec MySQL qui va se charger d'extraire et de modifier les informations dans ces fichiers.

Chaque SGBD a sa propre façon d'enregistrer les données, mais aucun d'eux ne peut y échapper : pour que les données restent enregistrées, il faut les stocker dans des fichiers sur le disque dur.

Par exemple, avec MySQL sous Windows, si vous utilisez XAMPP, vous devriez trouver les fichiers où sont stockées les informations dans  C:\xampp\mysql\data  .

C'est le même principe si vous utilisez MAMP, WAMP... : les fichiers de la base de données sont bien quelque part !

Et c'est justement ça, le gros avantage de la base de données : pas de prise de tête pour le rangement des informations. Vous demandez à MySQL de vous sortir tous les commentaires d'une recette de votre site enregistrées de février à juillet : il va lire dans ses fichiers, et vous ressort les réponses. Vous vous contentez de "dialoguer" avec MySQL. Lui se charge du sale boulot, c'est-à-dire de ranger vos données dans ses fichiers.

En résumé

  • Une base de données est un outil qui stocke vos données de manière organisée et vous permet de les retrouver facilement par la suite.

  • On communique avec MySQL grâce au langage SQL. Ce langage est commun à tous les systèmes de gestion de base de données (avec quelques petites différences néanmoins pour certaines fonctionnalités plus avancées).

  • PHP fait l'intermédiaire entre vous et MySQL.

  • Une base de données contient plusieurs tables.

  • Chaque table est un tableau où les colonnes sont appelées « champs » et les lignes « entrées ».

Nous arrivons au cœur du sujet de cette dernière partie du cours : la mise en place d'une base de données avec phpMyAdmin.

Exemple de certificat de réussite
Exemple de certificat de réussite