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 : phpMyAdmin

On va faire des manipulations sur une base de données. On va "voir" ce que peuvent contenir une base et ses tables.
Il existe plusieurs façons d'accéder à sa base de données et d'y faire des modifications. On peut utiliser une ligne de commande (console), exécuter les requêtes en PHP ou faire appel à un programme qui nous permet d'avoir rapidement une vue d'ensemble. Ici, on va découvrir phpMyAdmin, un des outils les plus connus permettant de manipuler une base de données MySQL.
phpMyAdmin est livré avec WAMP, on va donc pouvoir l'utiliser tout de suite. La quasi-totalité des hébergeurs permettent d'utiliser phpMyAdmin. Se renseigner auprès de son hébergeur pour savoir comment y accéder. On aura très certainement besoin d'un login et d'un mot de passe.
Sommaire

Créer une table

Ouvrir phpMyAdmin. pour cela, démarrer WAMP, clic gauche sur l'icône de la barre des tâches et aller dans "phpMyAdmin".
alt phpMyAdmin est un ensemble de pages PHP. Ce n'est pas un programme, mais des pages PHP toutes prêtes dont on se sert pour gagner du temps.
On commence donc simplement : on ne va pas coder dans ce chapitre, pour le moment on va simplement manipuler.

L'accueil de phpMyAdmin ressemble à ceci :

accueil de phpMyAdmin

Il y a 2 endroits importants signalés par des numéros sur la capture d'écran :
  1. Liste des bases : c'est la liste de nos bases de données. Le nombre entre parenthèses, c'est le nombre de tables qu'il y a dans la base.
    Sur la capture d'écran, on a donc 2 bases : information_schema, qui contient 28 tables, et mysql, qui contient 23 tables.
  2. Créer une base : pour créer une nouvelle base de données, taper un nom dans le champ de formulaire à droite, puis cliquer sur "Créer".
Pour le moment, 2 bases sont déj&agarve; créées : "information_schema" et "mysql". Ne pas toucher à ces bases, elles servent au fonctionnement interne de mysql.
On va créer une nouvelle base "test" dans laquelle on travaillera dans toute la suite du cours. Utiliser le formulaire à droite pour créer cette base : rentrer le nom "test" et cliquer sur le bouton "Créer".
L'écran suivant devrait alors s'afficher si la base a bien été créée :

nouvelle base
On vous indique qu'aucune table n'a été trouvée dans la base. On va en créer une.
Dans le champ "Créer une nouvelle table sur la base test", indiquer le nom news et le nombre de champs 3 :

nouvelle table
Cliquer sur "Exécuter".
La table n'est pas immédiatement créée, il faut maintenant indiquer le nom des champs et les données qu'ils peuvent contenir. On va faire simple car on cherche juste à tester phpMyAdmin ici. On va créer les 3 champs suivants pour cette table :
  • id : comme bien souvent, on va devoir créer un champ appelé id. C'est le numéro d'identification. Grâce à lui, toutes nos entrées seront numérotées, ce qui est bien pratique. Il y aura ainsi la news nº 1, nº 2, nº 3, etc.
  • titre : ce champ contiendra le titre de la news.
  • contenu : enfin, ce champ contiendra la news en elle-même.
On devrait avoir ceci :

champs
Chaque colonne représente un champ. Nous avons demandé 3 champs, il y a donc 3 colonnes.

phpMyAdmin nous demande beaucoup d'informations mais, il n'est pas nécessaire de tout remplir. La plupart du temps, les sections les plus intéressantes seront :
  • Champ : permet de définir le nom du champ (important !)
  • Type : le type de données que va stocker le champ (nombre entier, texte, date…)
  • Taille/Valeurs : permet d'indiquer la taille maximale du champ, utile pour le type VARCHAR notamment afin de limiter le nombre de caractères autorisés.
  • Index : active l'indexation du champ. Ce mot barbare signifie dans les grandes lignes que notre champ sera adapté aux recherches. Le plus souvent, on utilise l'index PRIMARY sur les champs de type "id".
  • AUTO_INCREMENT : permet au champ de s'incrémenter tout seul &agarve; chaque nouvelle entrée. On l'utilise fréquemment sur les champs de type "id".
Pour le test, on remplit le formulaire comme sur la capture d'écran en cochant AUTO_INCREMENT et définir un index PRIMARY sur le champ "id".
Quand c'est fait, cliquer sur le bouton "Sauvegarder" en bas de la page. La table est créée.
Avant d'aller plus loin, on va revenir un peu plus en détail sur les types de champs et les index, notamment l'index PRIMARY qu'on a utilisé.
Les types de champs MySQL
Si vous déroule la liste des types que propose MySQL, il y en a beaucoup :

liste des types
Alors que PHP ne propose que quelques types de données que l'on a vu (int, string, bool…), MySQL propose une quantité très importantes de types de données.
Ils sont classés par catégories :
  • NUNERIC : ce sont les nombres. On y trouve des types dédiés aux petits nombres entiers (TINYINT), aux gros nombres entiers (BIGINT), aux nombres décimaux, etc.
  • DATE and TIME : ce sont les dates et les heures. De nombreux types différents permettent de stocker une date, une heure, ou les deux à la fois.
  • STRING : ce sont les chaînes de caractères. Là encore, il y a des types adaptés à toutes les tailles.
  • SPATIAL : cela concerne les bases de données spatiales, utile pour ceux qui font de la cartographie. Ce ne sera pas notre cas, donc nous n'en parlerons pas ici.
En plus, phpMyAdmin a eu la bonne idée de proposer au tout début de cette liste les 4 types de données les plus courants :
  • INT : nombre entier.
  • VARCHAR : court texte (entre 1 et 255 caractères).
  • TEXT : long texte (on peut y stocker un roman sans problème).
  • DATE : date (jour, mois, année).
Ces 4 types couvriront 99% de nos besoins.
alt Petite remarque à propos de VARCHAR : c'est un type adapté aux textes courts, comme le titre d'une news sur son site. Sa seule exigence est qu'on doit indiquer la taille maximale du champ (entre 1 et 255). Si on ne le fait pas, on ne pourra pas créer la table. Si on ne sait pas à combien limiter ce champ, on peut mettre la valeur maximale (255) comme on l'a fait dans l'exemple précédent.
Les clés primaires
Toute table doit posséder un champ qui joue le rôle de clé primaire. La clé primaire permet d'identifier de manière unique une entrée dans la table. En général, on utilise le champ "id" comme clé primaire comme on vient de le faire.

Chaque news de notre site doit pouvoir être identifiée de manière unique. Le moyen le plus simple pour cela est de lui donner un numéro unique, dans un champ nommé "id". Il ne peut pas y avoir 2 news avec le même id ! Il en irait de même pour les autres tables de notre site : par exemple, chaque membre de notre site doit se voir attribuer un numéro unique. Si 2 membres ont le même numéro, on ne pourra pas les différencier !

Il est vital que chaque table possède sa clé primaire. On ne nous interdira pas de créer des tables sans clé primaire, mais leur performances seront extrêmement réduites. Il est conseillé donc de prendre le réflexe de créer à chaque fois ce champ "id" en lui donnant l'index PRIMARY, ce qui aura pour effet d'en faire une clé primaire. On en profitera en général pour cocher la case AUTO_INCREMENT afin que ce champ gère lui-même les nouvelles valeurs automatiquement (1, 2, 3, 4…).

Modifier une table

A gauche de notre écran, la table "news" qu'on vient de créer devient visible :

table news
  • Si on clique sur le mot "news", le contenu de la table s'affiche à droite de l'écran.
  • Si on clique sur la petite image de tableau à gauche, phpMyAdmin nous présentera la structure de la table.
Actuellement, comme notre table est vide (elle ne contient aucune entrée), c'est la structure de la table qui s'affichera dans les deux cas :

structure table
Ce tableau nous rappelle de quels champs est constituée notre table : c'est sa structure. Noter que le champ "id" est souligné car c'est la clé primaire de la table.
Il n'y a rien de bien intéressant à faire ici, mais il faut savoir qu'il est possible d'ajouter ou de supprimer des champs à tout moment. Ce n'est pas parce que notre table a été créée qu'elle est figée. On a des options pour renommer les champs, les supprimer, en ajouter, etc.
Jetons déjà un œil aux onglets en haut : "Structure", "Afficher", "SQL", etc. Cela nous amènera vers différentes options que nous verrons plus loin. Nous allons commencer par nous intéresser à l'onglet "Insérer" qui va nous permettre d'ajouter des entrées à la table.

Une page s'ouvre dans laquelle on peut rentrer des valeurs pour chacun des champs. Cela va être pour nous l'occasion d'insérer notre première news :

première news
Seule la colonne "Valeur" nous intéresse. On peut rentrer une valeur pour chacun des trois champs. On remarquera que je n'ai pas mis de valeur pour l'id : c'est normal, le numéro d'id est automatiquement calculé grâce à l'option auto_increment. Ne nous en occupons pas et choisissons plutôt un titre puis inscrivons un contenu. L'id de la première news sera 1, celui de la seconde sera 2, etc.
alt Les id ne doivent pas obligatoirement se suivre de 1 en 1. S'il n'y a pas de news nº 15 par exemple, cela ne pose aucun problème. Ce qui compte, c'est qu'il n'y ait pas deux news avec le même id. C'est d'ailleurs justement ce que permet d'éviter la clé primaire : elle interdit que deux entrées aient le même id.
Une fois qu'on a rentré le texte qu'on voulait, cliquer sur le premier bouton "Exécuter" de la page.
erreur Il y a d'autres champs en-dessous : les ignorer. Ils nous permettent d'ajouter plusieurs entrées à la fois mais nous n'en avons pas besoin.

On va recommencer 1 ou 2 fois, en faisant la même manipulation et en laissant le champ "id" vide.
On va afficher maintenant le contenu de la table. On peut soit cliquer sur l'onglet "Afficher" en haut soit sur le nom de la table dans le menu à gauche.

contenu de la table
On repère ici les champs : id, titre et contenu. Cette table a 3 entrées, et comme on peut le voir MySQL a bien fait les choses puisque les numéros d'id se sont créés tous seuls.

On peut modifier ou supprimer chacun des éléments qu'on voit à l'écran. Il y a beaucoup d'autres options en-dessous qu'on peut voir. Pour l'instant, ce qui compte, c'est d'avoir compris la procédure pour ajouter des éléments à la table et d'être capable de lister le contenu de la table.
question Mais faut-il passer par passer par phpMyAdmin à chaque fois qu'on veut ajouter ou supprimer un élément ?
Faut-il passer par là pour ajouter chaque news de son site, mais aussi chaque membre, chaque message des forums ?
Non, bien sûr. Comme son nom l'indique, phpMyAdmin est un outil d'administration. Il permet de voir rapidement la structure et le contenu de nos tables. Il est aussi possible d'ajouter ou de supprimer des éléments comme on vient de le voir, mais on ne le fera que très rarement. Nous apprendrons à créer des pages en PHP qui insèrent ou suppriment des éléments directement depuis notre site web.
Il reste encore à découvrir quelques-unes des fonctionnalités offertes par phpMyAdmin pour terminer le tour d'horizon de cet outil.

Autres opérations

On a vu jusqu'ici le rôle de 3 onglets :
  • Afficher : affiche le contenu de la table
  • Structure : présente la structure de la table (liste des champs)
  • Insérer : permet d'insérer de nouvelles entrées dans la table

On va en voir 6 autres :
  • SQL
  • Importer
  • Exporter
  • Opérations
  • Vider
  • Supprimer
SQL
Cliquer sur l'onglet "SQL" : SQL
Il s'affiche à l'écran :

SQL
C'est ici qu'on peut exécuter ce que l'on appelle des requêtes SQL pour demander à MySQL de faire quelque chose.

Dans la grande zone de texte, on peut taper des requêtes SQL. Par exemple on nous propose ici :
Code : SQL
SELECT * FROM 'news' WHERE 1
Ce qui signifie : "Afficher tout le contenu de la table 'news'". C'est justement ce langage SQL que nous allons découvrir tout au long des prochains chapitres.
Noter qu'il est aussi possible d'écrire des requêtes SQL dans une nouvelle fenêtre. Pour ouvrir une nouvelle fenêtre de requête SQL, cliquer sur le bouton SQL en haut du menu à gauche :

fenêtre SQL
Cette nouvelle fenêtre se révèlera souvent très pratique.
Importer
Il y a aussi un onglet "Importer" : Importer
Dans la page qui s'affiche, on peut envoyer un fichier de requêtes SQL (généralement un fichier .sql) à MySQL pour qu'il les exécute :

Importer
Seul le premier champ en haut devrait nous intéresser : il nous permet d'indiquer un fichier sur notre disque dur contenant des requêtes SQL à exécuter.
Cliquer ensuite sur le bouton "Exécuter" tout en bas sans se préoccuper des autres champs.
question Quelle différence y a-t-il entre écrire la requête SQL (comme on vient de le voir juste avant) et envoyer un fichier contenant des requêtes SQL ?
C'est pareil, sauf que parfois quand on doit envoyer un très grand nombre de requêtes, il est plus pratique d'utiliser un fichier. Dans les prochains chapitres du cours d'ailleurs, on aura un fichier de requêtes à exécuter, et il faudra utiliser cette méthode.
Exporter
Voyons maintenant l'onglet "Exporter". C'est ici qu'on va pouvoir récupérer notre base de données sur le disque dur sous forme de fichier texte .sql (qui contiendra des tonnes de requêtes SQL).
question Ce fichier que l'on va "exporter", est-ce le même que celui dont on parlait tout à l'heure ? Celui situé dans C:\wamp\mysql\data ?
Non pas du tout. Ce qu'on a vu tout à l'heure, c'était quelque chose d'illisible. On a dit qu'on n'y toucherait pas, et c'est vrai.
Le fichier qu'on va obtenir grâce à "l'exportation" de phpMyAdmin, c'est un fichier qui dit à MySQL comment recréer notre base de données (avec des requêtes en langage SQL).
question A quoi sert ce fichier ?
On peut s'en servir pour deux choses :
  • Transmettre notre base de données sur Internet : pour le moment, notre base de données se trouve sur notre disque dur. Mais lorsqu'on voudra héberger son site sur internet, il faudra utiliser la base de données en ligne de son hébergeur ! Le fichier .sql qu'on va générer nous permettra de reconstruire la base de données grâce à l'outil d'importation de phpMyAdmin (en général les hébergeurs proposent eux aussi phpMyAdmin pour qu'on puisse effectuer facilement des opérations sur notre base en ligne).
  • Faire une copie de sauvegarde de la base de données : on ne sait jamais, si on fait une bêtise ou si quelqu'un réussit à détruire toutes les informations sur notre site (dont la base de données), on sera bien content d'avoir une copie de secours sur son disque dur !

Notre écran doit ressembler à ceci :

exporter
Il est conseillé de laisser les options par défaut, c'est largement suffisant.
Distinguer simplement la structure des données de la table. La structure d'une table se résume en quelques lignes, ce sont en fait les noms des champs, leurs types etc… Par contre, les données correspondent aux entrées, et il peut y en avoir beaucoup ! Pour faire une sauvegarde complète, il faut donc prendre la structure ET les données.
erreur Penser à cocher la case "Transmettre" en bas, sinon il ne se passera rien. A noter qu'on peut demander une compression, ce qui est utile si notre table est très grosse.
Cliquer sur "Exécuter". On nous proposera alors de télécharger un fichier : c'est tout à fait normal. Ne pas hésiter à regarder ce qu'il y a dans ce fichier : on verra qu'il contient plusieurs requêtes SQL. C'est ce langage qu'on va apprendre dans les chapitres qui suivent !
question Comment dois-je faire pour recréer la base de données sur mon site web ?
Il faut aller sur le phpMyAdmin de son hébergeur (il en a forcément un). Se renseigner pour connaître l'adresse. Par exemple chez Free c'est : http://phpmyadmin.free.fr/phpMyAdmin (il faudra indiquer son login et mot de passe).
Une fois dessus, rendez-vous dans l'onglet "Importer" qu'on a vu tout à l'heure. Cliquer sur "Parcourir" pour indiquer où se trouve le fichier SQL qu'on vient de créer sur notre disque dur. Faire "Exécuter", attendre que ça l'envoie, et c'est bon ! Notre base de données est alors recréée sur Internet !
Opérations
On ppeut faire ici diverses opérations sur notre table.
On ne va pas les énumérer une à une, ni expliquer comment elles fonctionnent vu que c'est très simple. Il faut simplement savoir qu'on pourrait avoir besoin de :
  • Changer le nom de la table : indiquer le nouveau nom pour cette table.
  • Déplacer la table vers : si on veut mettre cette table dans une autre base de données.
  • Copier la table : faire une copie de la table, dans une autre base ou dans la même (attention, dans ce cas il faudra qu'elle ait un nom différent).
  • Optimiser la table : à force d'utiliser une table, surtout si elle est grosse, on finit par avoir des "pertes" qui font que la table n'est plus bien organisée. Un clic là-dessus et hop, c'est ré-arrangé.
Vider
Vide tout le contenu de la table. Toutes les entrées vont disparaître, seule la structure de la table restera (c'est-à-dire les champs).
erreur Attention ! Il n'est pas possible d'annuler cette opération !
Supprimer
Pour supprimer la totalité de la table (structure + données), cliquer sur cet onglet.
Là encore, bien y réfléchir à deux fois avant de tout supprimer, car on ne pourra rien récupérer par la suite, à moins d'avoir fait une sauvegarde au préalable avec l'outil d'exportation.