Aller au menu - Aller au contenu

Icône Présentation des bases de données

Mise à jour : 03/04/2010
Difficulté : Facile Facile Creative Commons BY-NC-SA
133 390 visites depuis 7 jours, dont 2 100 sur ce chapitre classé 2/786
Jusqu'ici, vous avez découvert le fonctionnement du langage PHP mais vous n'avez probablement pas encore le sentiment que vous êtes capables 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.

Une base de données permet d'enregistrer des données de façon organisée et hiérarchisée. Vous connaissez certes les variables, mais celles-ci restent en mémoire seulement le temps de la génération de la page. Vous avez aussi appris à écrire 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 messages de vos 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. Nous allons les étudier durant toute cette partie du cours !
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

Le langage SQL et les bases de données

La base de données (BDD) est un système qui enregistre des informations. Un peu comme un fichier texte ? Non, pas vraiment. Ce qui est très important ici, c'est que ces informations sont toujours classé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 bordélique ? Si j'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 ok, 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 1% restant, on peut 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, c'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 (par exemple des informations sur vos visiteurs), il vous sera très facile après de récupérer ce que vous cherchez.

Les SGBD s'occupent du stockage



Je vous ai présenté brièvement les SGBD (Systèmes de Gestion de Base de Données) dans le premier chapitre du cours. Les SGBD sont les programmes qui se chargent du stockage de vos données.

Les plus connus sont, pour rappel :

  • MySQL : libre et gratuit, c'est probablement le SGBD le plus connu. Nous l'utiliserons dans ce cours.
  • 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.


Il faut donc choisir le SGBD que vous allez utiliser pour stocker les données. Je vous recommande de travailler plutôt avec les SGBD libres et gratuits, tels que MySQL, PostgreSQL et SQLite. Après, tout est question de goût et des fonctionnalités que vous recherchez. MySQL est un bon compromis.

Nous allons utiliser MySQL mais sachez que l'essentiel de ce que vous allez apprendre fonctionnera de la même manière avec un autre SGBD. Ce cours est construit afin que vous ayez le moins de choses possible à réapprendre si vous choisissez de changer de SGBD.



Vous 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 "parler" avec le SGBD, 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 utiliserez le 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 :

Code : SQL
1
SELECT id, auteur, message, datemsg FROM livreor ORDER BY datemsg DESC LIMIT 0, 10


Le principal objectif de cette partie du cours sera d'apprendre à utiliser ce langage SQL pour que vous soyez capables 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é dans ce forum", etc.

PHP fait la jonction entre vous et MySQL



Pour compliquer un petit peu l'affaire (sinon c'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 de refus...

Communication entre PHP et MySQL


Voici ce qu'il peut se passer lorsque le serveur a reçu une demande d'un client qui veut poster un message sur vos 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é.


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

Structure d'une 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. Ecoutez-moi attentivement, et n'hésitez pas à lire lentement, plusieurs fois si c'est nécessaire.

Je vous demande d'imaginer ceci :
  • 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 vos 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
1 Kryptonic kryptonic@free.fr 24
2 Serial_Killer serialkiller@unitedgamers.com 16
3 M@teo21 top_secret@siteduzero.com 18
4 Bibou bibou557@laposte.net 29
... ... ... ...



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

Les champs dans cet exemple 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, ou 1 000, ou même 100 000 ! (je vous souhaite d'avoir autant de visiteurs ^^ ).

Très souvent, on crée un champ "Numéro", aussi appelé "ID" (identifiant). Comme nous le verrons plus tard, il est très pratique de numéroter ses entrées, même si ce n'est pas obligatoire.


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

Image utilisateur


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.

Pour vous donner quelques exemples concrets, voici quelques noms de tables que l'on peut être amenées à 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.

Voilà, vous devriez commencer à comprendre pourquoi vous allez avoir besoin d'une BDD sur votre site. ;)

Si quelque chose ne vous paraît pas clair, si vous avez l'impression de mélanger un peu "bases", "tables", "champs", "entrées", relisez de nouveau cette partie. Il faut que vous soyez capable de reproduire le schéma tous seuls sur un bout de papier.

Mais où sont enregistrées les données ?

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

Je suis sûr qu'il y a quelque chose qui vous titille dans ce chapitre. Ne mentez pas, tout débutant a ce problème, moi-même j'ai été bloqué quand j'ai appris le PHP, justement parce que je voyais pas bien ce que c'était une base de données. Comme je ne veux pas qu'il vous arrive pareil, je vais essayer d'éclaircir les points sombres ! :)

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 ça ! Où MySQL enregistre-t-il les données ?


Question typique, je dois avouer que la première fois c'est très troublant. On vous parle de quelque chose qui n'a pas l'air concret.
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 peut se faire d'une base de données.

Mais concrètement, quand MySQL enregistre des informations, il les écrit bien quelque part. Oui comme tout le monde, il 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 WAMP, vous devriez trouver les fichiers où sont stockées les informations dans C:\wamp\mysql\data. Je vous recommande 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. Vous demandez à MySQL de vous sortir toutes les news 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 il se charge du sale boulot, c'est-à-dire ranger vos données dans ses fichiers. ;)

Q.C.M.

Lequel de ces SGBD n'existe pas ?
Peut-on s'adresser directement à la base de données ?
Quel langage doit-on utiliser pour parler à MySQL ?
Laquelle de ces affirmations est incorrecte ?
Qu'est-ce qu'un champ ?

Statistiques de réponses au QCM

Si vous avez bien compris et retenu le schéma, que vous avez suivi sans trop de mal ce chapitre et que vous avez tout juste au QCM, c'est que vous savez ce qu'il faut.
Cependant, tout ceci doit vous paraître un peu flou. C'est tout à fait normal. Heureusement dans le chapitre suivant nous allons pas mal manipuler, ce qui devrait vous aider à mieux comprendre tout cela :)
Chapitre précédent Sommaire Chapitre suivant

Partager

52 commentaires pour "Présentation des bases de données"
Note moyenne : 3.61 / 4 (2518 votes)
Pseudo Commentaire
Hors ligne JESUISH2O # Posté le 06/04/2011 à 15:56:32

Bonjour à tous,
voila j'ai un soucis concernant un formulaire que j'ai créer.
J'ai crée ma base sql, ensuite j'ai fait ma page config.php ensuite j'ai créer ma page livreor.php.
Une fois que c'était fini j'ai créer une page html ou j'ai intégrer mon formulaire ainsi qu'une feuille de style css.
Je place donc tout mes éléments correctement et le soucis c'est que lorsque je travaille en local l'affichage de la page ne pose aucun soucis, par contre lorsque je met en ligne les fichiers sur mon ftp, lorsque j'ouvre la page j'ai les messages d'erreurs suivants:

Warning: mysql_select_db() [function.mysql-select-db]: A link to the server could not be established in /mnt/132/sdc/a/9/tributegoldman/livreor.php on line 5

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /mnt/132/sdc/a/9/tributegoldman/livreor.php on line 6

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /mnt/132/sdc/a/9/tributegoldman/livreor.php on line 37

Erreur SQL !

SELECT * FROM lo_messages ORDER BY id DESC

Pour la mise en place sur le ftp j'ai donc envoyer la page html+page css+page php+config.php est ce que j'ai oublié quelque chose ?

J'espère que vous pourrez m'aider car je suis perdu la :/
Merci d'avance !!
Hors ligne SabriZero # Posté le 17/06/2011 à 20:08:41
Sabri's
Avatar

Bonjour a tous !
Pouvez vous m'aidez j'ai un hébergeur selon le nom est T35 , il n'y a pas de données pour inscrire son identifient SQL et mot de passe etc (pour le code php :

<?php
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '');
?>
)

Pouvez vous m'aidez et si possible me donner un hébergeur gratuit et efficace !
Merci d'avance !

Sabri's
L'informatique
de la théorie à la pratique
;) ^^
 
Hors ligne Zizim0u # Posté le 05/08/2011 à 17:30:50
Je suis un Geek et Alors ?

Avis : Bon

Tien regarde par la -> Hébergement gratuit
Le meilleur reste Free.fr avec 10GO et ses gratuit QUE DEMANDEZ DE PLUS ^^ aller ciao :')

Trust - Acdc - Jimi Hendrix - ZzTop - Motorhëad - Iron Maiden - Gun's And Roses - The Police - Téléphone..

----------------------------
Dylan : 15 ans;
Passion : Hard-Rock; Guitare; Programmation.
 
Hors ligne vincent38 # Posté le 26/04/2012 à 21:46:02

Avis : Bon

Bon tuto , mais le serveur de base de données que j'utilise n'est pas reconnu (serveur sfr: 10.111.145.45:3306 )
Connecté ericdany # Posté aujourd'hui à 08:57:56
Avatar

Avis : Très bon

Bonjour et merci pour ce tuto.

J'ai fini ce paragraphe et j'ai un petit problème de cohérence. J'utilise MAMP avec MAC OSX 10.7 et dans le page PHPMyAdmin j'ai 3 base de données:

Information_schema (37)
MySQL (24)
performance_schema (17)

Est-ce normale???

Merci pour vos réponses.

Voir tous les commentaires