Présentation de MySQL
Nous voici enfin dans la seconde partie. Vous vous attendez à quelques "changements", non ?
Tout d'abord, il faut le dire, vous n'êtes plus de gros débutants. Vous
avez certainement l'impression de ne pas être capables de créer un site
web en PHP...
Et c'est vrai, mais pourtant tout ce que vous venez d'apprendre
est très important, et c'est à partir de maintenant qu'on va vraiment
pouvoir créer des scripts en PHP !
Et attention : pas des petits scripts. En fait, vous saurez faire à la
fin de cette partie la plupart des scripts que vous rencontrez sur des
sites web : système de news, commentaires, forum, livre d'or et j'en
passe.
Les parties suivantes, elles, vous aideront à améliorer la qualité
de vos scripts et à faire des manipulations plus avancées (c'est très
intéressant, mais bon on n'en est pas encore là :-°)
Allez, il est temps de faire les présentations
C'est MySQL, un système de base de données.
Base de quoi ?
Oui je sais, encore des mots qui font peur... C'est
particulièrement lourd d'ailleurs comme nom : "base de données". Ne
vous étonnez donc pas si je me permets de l'abréger par BDD (Base De
Données).
Vous pourrez trouver aussi l'abrévation
SGBD (Système de Gestion de Base de Données), qui est plus correcte.
Mais mon abrévation en 3 lettres est plus courte, donc je garde la
mienne, na !
La
base de données 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 pourra
enregistrer dans un fichier, ce que nous verrons plus tard car on en a
rarement besoin.
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.
PHP travaille avec MySQL
Jusqu'ici je ne vous ai présenté qu'un "personnage" : c'est PHP. Je
fais exprès d'utiliser cette image de personnage, car je la trouve bien
appropriée.
Jusqu'ici, on n'a fait que discuter avec PHP. On lui demandait par
exemple "Combien font 2 + 2 ?", "Répète cette phrase 20 fois" etc...
Bref, tout ça vous connaissez.
Eh bien maintenant, dans cette partie, on va s'adresser à quelqu'un d'autre : c'est MySQL, votre base de données.
Atchoum ! Euh, si je comprends bien, tu veux
nous faire apprendre "autre chose" que le PHP ? Tu crois pas qu'on en a
assez bavé là comme ça ?!
J'étais sûr que vous diriez ça
Alors non, je vous rassure, je ne m'amuse pas à vous faire souffrir.
Bien au contraire j'essaie de faire au plus simple. Seulement, vu que
l'on s'adresse à une autre "personne", eh bien il va falloir lui parler
différemment :
- Pour demander quelque chose à PHP, il fallait lui parler en PHP.
- Pour demander quelque chose à MySQL, il va falloir lui parler en... SQL !
Vous voyez vous commencez à comprendre
Alors, avant que vous alliez chercher une chaise et une corde pour
abréger vos souffrances, je tiens à vous rassurer : le SQL n'a rien à
voir avec le PHP. C'est beaucoup beaucoup plus simple, et en plus cette
fois on va lui parler avec des "phrases" (en anglais of course

)
Seulement, 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...
Ca vous rappelle les bons souvenirs du premier chapitre, non ?
Ici on ne voit pas le client, on s'intéresse surtout à ce que le serveur fait lorsqu'il doit génèrer une page PHP.
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 :
- Le serveur utilise toujours PHP, il lui fait donc passer le message.
- 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.
- MySQL fait le travail que PHP lui avait soumis et lui répond "OK, c'est bon !"
- PHP renvoie au serveur que MySQL a bien fait ce qu'il était demandé.
Voilà en gros comment on peut schématiser ça. Je n'ai pas mis le
client pour ne pas vous embrouiller, mais il est clair qu'il aurait
fallu le mettre tout en haut du schéma (c'est lui qui fait appel au
serveur, comme nous l'avons vu dans le tout premier chapitre).
Bon, eh bien maintenant que nous avons fait les présentations, il
va falloir voir comment est organisée une base de données (très très
important).
Oulah oulah ! Surtout faites très attention à ce qui va suivre ! C'est indispensable pour bien comprendre la base de données !
Et pis c'est pas parce que le titre vous donne la nausée que vous devez vomir sur le clavier
Bon allez, un peu de sérieux, ce qui suit est =>
VITAL <=
Ce n'est pas compliqué (ouf !), mais ce sera une des rares fois où je vous demanderai de retenir du vocabulaire.
En effet, avec la BDD 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 :
- La base, c'est l'armoire. 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, dans le langage MySQL, 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. Par exemple, voici à quoi peut ressembler le contenu d'une table appelée "visiteurs" :
Table "visiteurs"
Numéro |
Pseudonyme |
E-mail |
Age |
1 |
Sanae |
sanae.kar@gmail.com |
21 |
2 |
Ayoub |
ayoub.kh@gmail.com |
23 |
3 |
Mouncef |
mouncef@yahoo.fr |
21 |
4 |
Bibou |
bibou557@laposte.net |
29 |
... |
... |
... |
... |
Ce tableau est donc le contenu d'une table (le tiroir).
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". 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 :
Bon de toute manière, l'essentiel c'est que vous compreniez qui contient qui.
Comme vous le voyez, on peut mettre autant de tables que l'on veut dans
une base (ce qui fait qu'en général une seule base suffit).
Dans chaque table, les données sont enregistrées sous la forme d'un tableau, comme nous l'avons vu plus haut.
Pour vous donner quelques exemples concrets, voici quelques tables utilisées sur ce 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 tout seul sur un bout de papier.
Avant de terminer le chapitre, voici une question que l'on se pose fréquemment quand on lit ce genre de chapitres sur MySQL.
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 !
T'es gentil tu nous présentes tes jolis
tableaux, tes bases, tes tables, tes champs etc... 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 ce sont des
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.
Mais où sont ces $#%@#$ de fichiers ?!

Réponse : ils sont dans le dossier où MySQL est installé. Vous devriez trouver ces fichiers dans le dossier :
C:\Program Files\wamp\mysql\data
Eh bah vous savez quoi ? On s'en fout que ça soit là
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.
Comment s'appelle le système de base de données que l'on utilise avec PHP ?
Peut-on s'adresser directement à la base de données ?
Quel langage doit-on utiliser pour parler à MySQL ?
Laquelle de ces affirmations est incorrecte ?
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
CopyRight ©2006 -Ayoub KHAYATI (AcidZone)