Les bases de donnees sont des elements tres importants en PHP. On les utilise pour stocker des donnees. Leur gros avantage est que via un langage dedie, on va pouvoir recuperer les donnees stockees tres rapidement, faire de nombreuses operations dessus, tout ca en un temps record !
Par exemple, le forum informatique de ce site repose entierement sur l'utilisation d'une base de donnees qui contient les messages, les sujets, etc ...
On abrege souvent "base de donnees" par BDD, donc si vous me voyez ecrire cela plus loin, ne vous posez pas de questions ;) On appelle SGBD un systeme de gestion de base de donnees. L'avantage du SGBD est que pour aller chercher vos donnees, vous ne vous preoccupez pas de savoir ou sont stockees les donnees ni comment, vous dites "Je veux telle donnee" et le SGBD va la chercher pour vous. Vous pourrez egalement recuperer des donnees d'une maniere tres compliquee qui dependent d'enormement de facteurs, chose quasi impossible en stockant les donnees dans un fichier sans de nombreux calculs tres lourds. Le langage que l'on utilise pour interroger et effectuer des operations sur une ou plusieurs bases de donnees/tables s'appelle le SQL.
Pour tout ce qui suit, nous allons utiliser un SGBD appele MySQL. Il s'agit du SQBD le plus repandu, vous ne devriez donc pas avoir de probleme a faire fonctionner votre site ulterieurement. Cependant, PHP supporte d'autres SGBD dont voici une liste non exhaustive :
Une base de donnees contient des tables. Faisons une analogie : Vous avez un bureau qui represente la base de donnees. Sur ce bureau vous avez des dossiers, ce sont les tables. Ces dossiers contiennent des documents, pour nous les donnees.

Une table contient des champs. Chaque champ va pouvoir recevoir un type de donnees bien precis. On ne stocke pas un numero de securite sociale avec le meme type que le nom et le prenom. On peut representer une table sous la forme d'un tableau :

Ici, nous avons trois champs :
Chacune des donnees que vous allez stocker dans la table va remplir les champs, et une donnee correspond ici a une ligne du tableau. Par exemple pour stocker des articles on aurait pu prendre une liste de champs comme "numero, titre, texte" le tout formant la table "articles". Il est bien important de savoir qu'une table peut comporter un nombre infini de donnees (dans la limite de vos ressources materielles bien entendu). Une base de donnees peut elle aussi comporter une infinite de tables.
PHPMyAdmin est une application PHP qui va vous permettre de gerer vos bases de donnees. Vous allez pouvoir creer des bases, des tables, etc... sans vous preoccuper du langage SQL qu'il faut ecrire. Pour acceder a PHPMyAdmin, tapez dans votre navigateur l'adresse suivante :
http://localhost/phpmyadmin
Si vous avez installe EasyPHP, tapez ceci : http://localhost/mysql/ (le / de fin est important)
Si tout s'est bien passe, vous allez arriver devant un ecran de ce style :

Vous allez maintenant pouvoir creer votre base de donnees. Pour l'exemple, nous allons creer une base de donnees intitulee actualites. Mettez donc actualites dans la case Creer une base de donnees et cliquez sur Creer. Ne vous preoccupez pas du champ interclassement.

La base de donnees a ete creee. Comme vous pouvez le constater, le langage SQL que PHPMyAdmin a utilise pour creer cette base est CREATE DATABASE actualites
Il s'agit de ce qu'on appelle une requete (My)SQL. Nous allons maintenant creer une table news qui va contenir des actualites pour notre site Web. Reflechissez maintenant au nombre de champs que nous pourrions mettre. Tout d'abord, il faut pouvoir identifier chacune des actualites postees. Je vous ai dit plus haut qu'il fallait utiliser un champ de type numerique. On va le nommer id_news. Chaque news aura donc un id different. Ensuite, il faut que l'on connaisse le titre de l'actualite, sa date de parution, l'auteur de la news et son texte. Cela nous fait donc 5 champs au total. Dans la case nom, indiquez news, dans la case nombre de champs, mettez 5, puis cliquez sur Executer.

Vous voici maintenant devant une liste de champs qu'il va falloir determiner. Le premier champ sera notre champ id_news. Indiquez donc dans la premiere case id_news. Pour le type de champ, je vous laisse regarder cette page : types de champs MySQL. Apres reflexion, vous pourrez avoir une quantite de news assez importante, on va donc utiliser un type SMALLINT avec comme attribut UNSIGNED. Vous pourrez donc stocker 65536 news. Je pense que c'est correct non ?
Dans le champ extra indiquez autoincrement. Pourquoi ? car en fait, l'avantage de ce type de champ est que vous allez pouvoir ne pas vous preoccuper du numero a ajouter, MySQL le fera pour vous. Quand vous ajouterez une news, vous n'aurez donc pas a aller recuperer le numero maximum existant pour lui ajouter un et l'inserer dans la base. Selectionnez ensuite la troisieme option (icône avec un U), qui indique que ce champ sera un champ ayant une valeur unique (il s'agit egalement d'un INDEX qui va vous permettre d'accelerer les recherches sur la base, mais nous y viendrons plus tard).
Pour le second champ, il s'agit du titre de l'actualite. On peut donc nommer ce champ titre, et lui mettre un type VARCHAR (mettez 255 dans l'option "taille/valeurs").
Pour le troisieme champ, il s'agit d'une date de parution. Vous connaissez ce qu'est un timestamp, nous n'allons pas utiliser ce type de champ car le timestamp de PHP et celui de MySQL sont differents. En revanche, nous allons utiliser un type INT avec l'attribut UNSIGNED, qui permettra de stocker des dates provenant de la fonction time() de PHP.
Pour le quatrieme champ, nous allons utiliser le nom auteur, qui contiendra le pseudo du posteur de la news, avec le type VARCHAR et 20 caracteres dans la zone "taille/valeurs". Il faut savoir qu'il serait plus efficace de stocker un numero correspondant a un numero de membre, seulement nous n'avons pas de table membres et je ne vais donc pas vous compliquer la tâche pour ce premier exercice.
Le dernier champ sera de type TEXT et portera le nom de texte. Il servira a contenir le texte de la news.
Choisissez dans la zone "moteur de stockage" l'option MyISAM. Je ne vous dis pas pourquoi, mais sachez que certains types de tables ne sont pas supportes chez certains hebergeurs, ce qui n'est pas le cas du type MyISAM. Ce n'est pas dramatique en soi car on peut changer de type de table via les options de PHPMyAdmin, mais les autres types offrent certaines specificites que nous ne detaillerons pas ici et qui peuvent ne pas etre adaptees. Une fois que tout est rempli, cliquez sur le bouton Sauvegarder. Si tout va bien, PHPMyAdmin executera la requete suivante :
CREATE TABLE `news` (
`id_news` MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT ,
`titre` VARCHAR( 255 ) NOT NULL,
`date` INT UNSIGNED NOT NULL ,
`auteur` VARCHAR(
20 ) NOT NULL ,
`texte` TEXT NOT NULL , UNIQUE
( `id_news` ) )
ENGINE = MYISAM ;
Vous vous retrouvez devant cet ecran :

Maintenant, nous allons inserer des donnees dans cette table news. Pour ce faire, remarquez les onglets presents en haut du cadre de droite :

Cliquez sur l'onglet Inserer. Vous obtenez a l'ecran une representation des differents champs avec des zones de texte pour vous permettre de les remplir :

Il va maintenant falloir remplir les champs. Voici ce que vous pouvez mettre :
Tout d'abord dans le champ id_news, ne mettez rien, en effet on a dit que c'etait un champ qui se remplissait automatiquement. Pour le titre, a vous de trouver un titre accrocheur :p. En ce qui concerne la date, faites dans un fichier PHP ceci :
<?php
echo time();
?>
Notez la valeur obtenue et renseignez-la dans le champ date. Pour le champ auteur, indiquez votre pseudo. Mettez ensuite un texte dans la zone de texte correspondant au champ texte, ce sera le texte de la news. Cliquez ensuite sur Executer.

Voila ce qu'a pu donner la requete :
INSERT INTO `news` ( `id_news` , `titre` , `date`, `auteur` , `texte` ) VALUES ( NULL , 'Bienvenue sur mon site !', '1166970760', 'Anthony', 'Ceci est ma premiere actualite !' );
Si vous souhaitez maintenant consulter les donnees presentes dans la table, vous pouvez cliquer sur l'onglet Afficher. Voici ce que vous obtenez (j'ai insere une autre news entre temps pour vous montrer que l'on peut en mettre le nombre qu'on veut) :

J'espere que ce chapitre sur PHPMyAdmin et une introduction a MySQL vous ont permis de comprendre les concepts fondamentaux de ce qu'est une base de donnees, car pour le prochain chapitre, nous allons maintenant parler de requetes, le tout melange avec du code PHP :p