Inévitablement, nous allons commencer par vous expliquer ce qu'est une base de données.
Imaginez une simple liste de produits chez un marchand.
On y listerait chacun de ses articles lignes par lignes, en indiquant à chaque fois dans l'ordre :
Numéro produit - Catégorie - Désignation - Quantité en stock
Si on listait ces produits par exemple dans un logiciel de tableur (Excel, vous connaissez?), nous aurions :
Numéro | Catégorie | Désignation | Quantité en stock |
23 | Produit ménager | Vaporisateur Ajax vitres | 34 |
27 | Produit ménager | Le chat lessive en poudre | 20 |
28 | Outillage | Tourne visse plat 2mm | 11 |
30 | Outillage | Truelle maçonnerie | 8 |
32 | Outillage | Sac de ciment | 33 |
Pas besoin d'en faire une longue liste, je pense que vous avez compris le principe. :)
Vous avez peut-être déjà fait une liste de vos CD ou de vos DVD sur votre ordinateur, là, le principe est le même : c'est une liste.
Cette liste sera donc appelée une table dans notre base de données. Une base de données peut contenir plusieurs tables, par exemple nous aurions besoin d'une autre table pour lister les ventes / achats de produits de notre petit magasin. :)
Dans ce cours, nous allons prendre pour exemple quelque chose d'un peu plus amusant que des pelles et brouettes, nous allons créer une liste de nos jeux vidéos.
Vous verrons au fur et à mesure comment créer notre propre "logiciel" de gestion des jeux, en commencent par en afficher la liste, puis en nous permettant d'ajouter / supprimer des jeux à cette liste, et enfin, par la possibilité de modifier la fiche d'un jeu que l'on aurai prêté par exemple.
Pour commencer, je vous ai crée une petite liste de jeux vidéos toute prête, que nous allons insérer dans PHPmyAdmin, qui est un panel de gestion simplifiée de notre base de données.
En clair, nous pourrions très bien créer toutes nos tables directement avec PHP, mais c'est un peu compliqué pour pas grand chose, nous ne nous intéresseront donc pas à cela toute suite.
Nous avions parlé de l'accès à PHPmyAdmin dans le chapitre 1.2 - "Que faut'il pour faire du PHP?".
Nous y énoncions, respectivement pour Windows, Mac OS X et Linux, comment accéder à PHPmyAdmin depuis votre navigateur Internet. Si vous ne vous en souvenez plus, n'hésitez pas à relire la partie de ce chapitre traitant de votre système d'exploitation.
Une fois que nous sommes sur PHPmyAdmin, si cela n'a pas été fait par défaut lorsque vous arrivez, choisissez dans le menu déroulant en haut à gauche la base de données "test", qui doit normalement déjà exister. Nous nous retrouvons face à cela :
En bas de la page principale, un petit formulaire permet de créer de nouvelles tables.
Nous allons donc créer une table dont le nom sera "bouquins", et comportant 8 champs.
Validez, nous arrivons maintenant sur une page nous permettant de paramétrer les champs de notre table "bouquins".
Le premier champ se nommera "id". Pourquoi?
Très souvent, si ce n'est pas quasiment tout le temps, nous créerons un premier champ "id", qui correspond au numéro de l'entrée de la table.
Par exemple, un magazine aura l'id 12, tandis qu'un autre aura l'id 23, c'est un peu comme une référence produit.
Celle-ci nous permettra des instructions plus faciles pour traiter nos données, par exemple on demandera à supprimer le roman dont l'id est "32", plutôt que de demander à supprimer le roman "Le Crime de l'Orient Express", ce qui serait plus compliqué dans le cas où vous auriez ce même roman en double, publié sous plusieurs éditions. Dans ce cas, si nous demandions à supprimer le roman "Le Crime de l'Orient Express", il faudrait rajouter "publié aux éditions Poche" dans notre instruction MySQL, sinon, celui-ci supprimera les deux versions du roman sans nous demander notre avis... Autant dire qu'un champ de plus "id" nous fera gagner beaucoup de temps.
Le deuxième champ, lui, se nommera ... "editeur". Nous y enregistreront le nom de l'éditeur du roman, magazine, BD, manga tout ce que vous voulez.
Le troisième champ contiendra la "collection" du livre. Par exemple, ce champ peut contenir "Full metal Alchemist" pour un manga, ou encore "Le petit Spirou".
Le quatrième champ, très utile, permettra de noter si le roman à été prêté ou non, là je pense que certains seront ravis de coder ça.
Nous le nommerons donc "pret".
Le cinquième champ contiendra le titre du roman ou de la BD en question. Nous le nommerons donc "titre".
Le sixième champ définit le genre du roman. Ce champ vous sera très pratique pour effectuer une recherche par genre. :)
Nous appelons donc ce champ "genre".
Le septième champ est un facteur important, notamment pour les ventes de romans, Bds et magazines. Il s'agit du prix.
Ce champ se nommera tout simplement "prix".
Si vous voulez ajouter quelques notes personnelles sur un roman, une BD ou encore un magazine, il peut être utile de créer un champ "notes".
Voici une capture d'écran de PHPmyAdmin, présentant la création de nos tables, je commenterais ensuite les points que je n'ai pas abordés jusque maintenant.
J'ai volontairement coupé le milieu de l'image, les parties "Attributs", "Null", "Défaut", ainsi que le Type de table, ne nous seront pas utile avant... un bon moment!
Intéressons nous déjà à la colonne "Type".
Nous utilisons ici trois types de champs.
- INT A pour particularité de contenir des chiffres.
- TEXT Contiendra lui... du texte, donc des chiffres également. A noter que l'on peut stocker un maximum de 65535 caractères dans ce type de champ, nous utiliserons donc MEDIUMTEXT ou LONGTEXT en cas de besoin.
- VARCHAR Est utilisé pour un petit champ, contenant au maximum 255 caractères!
Il en existe beaucoup d'autres, comme vous pouvez le voir dans le menu déroulant sur PHPmyAdmin, mais nous n'allons nous occuper que de ceux-là dans un premier temps.
Le champ "id" est donc un peu spécial.
On le définit comme étant une "clef primaire", puis on lui demande dans la colonne "extra" de s'auto incrémenter à chaque nouvel enregistrement.
Ca veut dire quoi ça?
En fait, disons que le dernier élément enregistré dans votre table "bouquins" portait l'id numéro 43. Lors d'un nouvel enregistrement, MySQL reprends ce dernier id enregistré, lui ajoute 1, et en fait la valeur de l'id du nouvel élément enregistré.
Enfin, on donne également une Taille obligatoire pour les valeurs de l'id, on choisira "4", ce qui veut dire que ce champ peut contenir au maximum 4 chiffres... De quoi enregistrer 9999 BDs dans notre liste, ce qui devrait être déjà pas mal, mais si vous êtres un gros collectionneur ou un hardos-collectionneur-truc-de'ouf et que vous avez plein de bouquins en tout genre à votre actif ... Remplacez "4" par "5", voir "6", ce qui permettrait d'enregistrer 999999 bouquins au maximum, ... J'espère que vous ne vivez pas dans un studio! :D
Les autres champs à part celui qui a pour titre "notes", eux, sont de type VARCHAR, et auront pour valeur "250", soit un maximum de 250 caractères enregistrés dans notre base... cela devrait suffira pour y écrire le titre d'un roman, même long.
Le champ "notes" sera de type TEXT. En effet, le contenu de ce champ est variable et si vous faites une remarque longue, autant ne pas mettre de limite de 250 caractères.
Une fois tous ces champs remplis correctement, on valide en appuyant sur "Sauvegarder".
Notre table est maintenant crée.
Pour débuter, nous n'allons pas commencer par apprendre comment insérer des données dans notre table (rajouter des livres à notre collection), mais plutôt par apprendre à lire dans notre table (lister nos bouquins enregistrés). C'est pourquoi je vous ai préparé quelques lignes de code SQL, qui vont servir à enregistrer une 15ene de livres dans notre collection, histoire de pouvoir commencer dès le chapitre prochain à apprendre à lire ces données.
Dans le menu du haut de PHPmyAdmin, cliquez sur "SQL".
Vous n'avez ici que deux champs, à gauche, une zone de texte, à droite, une liste, en l'occurrence la liste de vos champs.
Dans la zone de texte de gauche, coller ces quelques lignes de code ci-dessous, puis, cliquez sur "exécuter".
Nous voilà prêts à passer au chapitre suivant, afin de commencer à vous apprendre à écrire ces données dans une page web, en les triant par genre, titre, prix, ... :)
A toute suite dans le chapitre 4.2!! =)
Par : Legibe & Vinchz, le 10 septembre 2006