Alain Barraud Mémento informatique  
 
Accueil Logithèque - SE Photo - vidéo Internet - protocoles Site Web PC - Réseau Archives
Page ouverte le 03/03/2010
retour sommaire PHP
Logo PHP
Partie 3 : Présentation des bases de données

En PHP, on peut difficilement se passer d'une base de données. Cet outil incontournable sert à enregistrer des données de façon efficace et organisée.
Tout ce qu'on veut enregistrer sur son site va se retrouver stocké dans une base de données : liste des membres, messages des forums, news, etc.

Une base de données permet d'enregistrer des données de façon organisée et hiérarchisée.
On a vu les variables, mais elles restent en mémoire seulemnt le temps degénération de la page. De même, écrire dans un fichier devient très vite compliqué dès qu'il y a beaucoup de données à enregistrer.
Or, il faut stocker la liste des membres, les messages des forums, les options de navigation des membres… Les bases de données sont le meilleur moyen de faire cela de façon simple et propre.
Sommaire

Le langage SQL et les bases de données

La base de données (BDD) est un système qui enregistre des informations. Ces informations sont toujours classées. c'est un moyen simple de ranger des informations.
Les SGBD s'occupent du stockage
SGDB (systèmes de Gestion de Base de Données). Les SGBD sont les programmes qui se chargent du stockage des données.
Les plus connus sont :
  • MySQL : libre et gratuit, c'est probablement le SGBD le plus connu. C'est lui qu'on va utiliser.
  • PostgreSQL : libre et gratuit comme MySQL, avec plus de fonctionnalités mais un peu moins connu.
  • SQLite: libre et gratuit, très léger mais très limité en fonctionnalités.
  • Oracle : utilisé par les très grosses entreprises, sans aucun doute un des SGBD les plus complets mais il n'est pas libre et on le paie le plus souvent très cher.
  • Microsoft SQL Server : le SGBD de Microsoft.
On donne les ordres au SGBD en langage SQL
On va devoir communiquer avec le SGBD pour lui donner l'ordre de récupérer ou d'enregistrer des données. Pour "parler" avec le SGBD, on utilise le langage SQL.
Le langage SQL est un standard, quel que soit le SGBD utilisé, on utilise le langage SQL. Cependant, il y a quelques variantes d'un SGBD à l'autre, mais cela ne concerne en général que les commandes les plus avancées.
Donc, il faut apprendre le langage SQL.
Un exemple de commande en langage SQL pour donner une idée :
Code : SQL
SELECT id, auteur, message, datemsg FROM livreor ORDER BY datemsg DESC LIMIT 0. 10
Objectif : apprendre à utiliser ce langage SQL pour être capable de donner n'importe quel ordre à la base de données, comme par exemple : "Récupère-moi les 10 dernières news de mon site", "supprime le dernier message posté sur ce forum", etc.
PHP fait la jonction entre nous et MySQL
On ne va aps pouvoir parler à MySQL directement. Seul PHP peut le faire.
C'est donc PHP qui sera l'intermédiaire entre nous et MySQL. on demandera à PHP :"Va dire à MySQL de faire ceci.".
Un petit shéma :

dialogue PHP / MySQL

Voilà ce qui peut se passer lorsque le serveur a reçu une demande d'un client qui veut poster un message sur nos forums :
  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 avait soumis et lui répond "OK, c'est bon !"
  4. PHP renvoie au serveur que MySQL a bien fait ce qui lui était demandé.
Après ces grandes lignes, voyons comment est organisée une base de données. C'est indispensable.

Structure d'une base de données

Avec les bases de données, il faut utiliser un vocabulaire précis. Pour s'en souvenir, servons-nous d'une image, celle d'une armoire :
  • 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 infos sur nos visiteurs, un autre qui contient les messages postés sur votre forum…
  • 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, voici à quoi peut ressembler le contenu d'une table appelée "visiteurs" :

Table "visiteurs"
NuméroPseudonymeE-mailAge
1KryptonicKryptonic@free.fr24
2Serial_Killerserialkiller@unitedgamers.com 16
3alain33top_secret@free.fr54
4Bidoubibou557@laposte.net29

Ce tableau représente le contenu d'une table (c'est-à-dire le tiroir de l'armoire).
Dans cet exemple, les champs sont : "Numéro", "Pseudonyme", "E-mail" et "Age". Chaque ligne est une entrée. Ici, il y a 4 entrées, mais une table peut très bien en contenir 100, 1 000, voir 100 000 !
alt Très souvent, on crée un champ "Numéro", aussi appelé "ID" (identifiant). Comme on le verra, il est très pratique de numéroter ses entrées, même si ce n'est pas obligatoire.

Voici l'indispensable shéma pour que ce soit clair :

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). Chaque table est en fait un tableau où les colonnes sont appelées champs et où les lignes sont appelées entrées.
Quelques exemples concrets, voici quelques noms de tables que l'on peut ê:tre amené à créer pour les besoins de son site web :
  • news : stocke toutes les news qui sont affichées à l'accueil.
  • livre_or : stocke tous les messages postés sur le livre d'or.
  • forum : stocke tous les messages postés sur le forum.
  • newsletter : stocke les adresses e-mails de tous les visiteurs inscrits à la newsletter.

Mais où sont enregistrées les données

question Où MySQL enregistre-t-il les données ?
En fait, les tableaux n'existent pas concrètement. C'est une façon de "visualiser" la base de données. Réellement, MySQL enregistre les informations dans des fichiers.
Ces fichiers sont quelque part sur le 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.
alt Par exemple, avec MySQL sous Windows si on utilise WAMP, on devrait trouver les fichiers où sont stockées les informations dans C:\wamp\mysql\data. Il est très fortement de ne pas y toucher car ce n'est pas prévu pour être modifié directement !
Dans la pratique, on n'ira jamais toucher à ces fichiers directement. On demandera toujours à MySQL d'enregistrer, ou d'aller lire des choses. Après, c'est lui qui se débrouille pour classer ça comme il veut dans ses fichiers.
Et c'est bien ça le gros avantage de la base de données : pas de prise de tête pour le rangement des informations. On demande à MySQL de nous sortir toutes les news de notre site enregistrées de Février à Juillet, il va lire dans ses fichiers, et nous ressort les réponses. On se contente de "dialoguer" avec MySQL. Lui il se charge du sale boulot, c'est-à-dire ranger nos données dans ses fichiers.