NoShade.net est en vente — Contactez nous si vous êtes intéressé
Le siteTutoriauxInterviews
icone RSS NoShade.net

Accueil » Tutoriaux » PHP » Chapitre 4.1 : Les bases de données

Les tutoriaux Php

4.1 - Les bases de données

Qu'est-ce qu'une base de données?

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.

Présentation de PHPmyAdmin

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 :

Schema
A noter que, selon votre version de PHPmyAdmin, celui-ci peut avoir une interface un peu différente, mais nous nous y retrouverons toujours, celle-ci ne change que très peu selon les versions.

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.

Schema

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".

INSERT INTO `bouquins` VALUES (1, 'Kurokawa', 'Fullmetal Alchemist', '', 'Tome 7', 'Mangas', '6,50', '');
INSERT INTO `bouquins` VALUES (2, 'Kurokawa', 'Fullmetal Alchemist', 'Guillaume', 'Tome 5', 'Mangas', '6,50', '');
INSERT INTO `bouquins` VALUES (3, 'Dupuis', 'Le petit Spirou', '', 'C''est du joli! (Tome 12)', 'BD', '8,50', '');
INSERT INTO `bouquins` VALUES (4, 'Dupuis', 'Le petit Spirou', '', 'Tu ne s''ras jamais grand! (Tome 11)', 'BD', '8,50', '');
INSERT INTO `bouquins` VALUES (5, 'Dupuis', 'Le petit Spirou', '', 'C''est pas de ton âge! (Tome 9)', 'BD', '8,50', '');
INSERT INTO `bouquins` VALUES (6, 'Robert Laffont', '', 'Louise', 'Mes amis Mes amours', 'Roman', '19,95', '');
INSERT INTO `bouquins` VALUES (7, 'Presses de la cité', '', '', 'Princesse Maorie', 'Roman', '19,48', '');
INSERT INTO `bouquins` VALUES (8, 'Ecole des loisirs', '', '', 'Le Père Goriot', 'Roman', '5,70', 'De Balzac :)');
INSERT INTO `bouquins` VALUES (9, 'Albin Michel', '', '', 'Journal d''hirondelle', 'Roman', '13,90', 'Amélie Nothomb');
INSERT INTO `bouquins` VALUES (10, 'Christian Bourgois', '', '', 'Le bruit du temps', 'Roman', '5,70', '');
INSERT INTO `bouquins` VALUES (11, 'Micro application', '', '', 'Site web dynamique - Le guide complet', 'Formation', '11,50', '');
INSERT INTO `bouquins` VALUES (12, 'First', 'Pour les Nuls', '', 'Concevoir et créer un site Web', 'Formation', '17,00', '');
INSERT INTO `bouquins` VALUES (13, 'Les éditions de l''homme', '', 'Martine', 'Le temps des pêches. 155 Délicieuses recettes', 'Formation', '18,80', 'Essayer la recette avec les poires et bananes en page 57!!');
INSERT INTO `bouquins` VALUES (14, 'La boite à bulles', '', '', 'Petites hontes enfantines', 'BD', '12', '');
INSERT INTO `bouquins` VALUES (15, 'Glenat', 'One Piece', '', 'Water Seven, la cité sur l''eau (Tome 34)', 'Mangas', '6,22', '');
INSERT INTO `bouquins` VALUES (16, 'Bamboo', 'Les postiers', '', 'Tome 1', 'BD', '9,10', '');

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

Sommaire du cours PHP

» Sommaire
» 1.1 Avant propos
» 1.2 Que faut'il pour faire du php?
» 2.1 Écrire du texte en PHP
» 2.2 Les commentaires, les variables et les calculs
» 2.3 Les conditions
» 2.4 La concaténation + Évaluation
» 3.1 Transmission de données
» 3.2 Les fonctions + Dates et heures
» 3.3 Les Arrays (tableaux) + les boucles
» 4.1 Les bases de données
» 4.2 Lecture dans une BDD
» 4.3 Enregistrer dans une BDD
» 4.4 Modifier le contenu d'une table
» 4.5 Supprimer du contenu dans une BDD
» 4.6 Statistiques
» 5.1 Les sessions et cookies
» 5.2 Exercice : Un système de login multi-membres