vers un site plus interactif... (2)

Nous avons vu comment demander des informations à l’utilisateur avec un formulaire HTML, et les récupérer dans un script PHP. Maintenant, nous voulons pouvoir :
- Stocker ces informations quelque part,
- Pouvoir les retrouver pour les afficher par exemple,
- Pouvoir les modifier et les effacer.
C’est exactement l’objet du logiciel MySQL.

MySQL est un Système de Gestion de Bases de Données (SGBD). Il gère un espace mémoire dans lequel il stocke des bases de données. Chaque base de données contient des tables, comme par exemple celle-ci :

Table « gens » :
civnomprenom
MadameRenaudAngélique
MonsieurDirecteurLe

« civ », « nom » et « prenom » sont les champs (ou colonnes) de la table. Chaque ligne est appelée « tuple ».

MySQL attend que PHP lui envoie des requêtes pour les exécuter et retourner un résultat. Ces requêtes doivent être rédigées dans un nouveau langage, le SQL. Ce langage permet de faire les 4 opérations élémentaires d’un SGBD :

- Insertion (pour ajouter un tuple à une table) :
insert into `gens` (`civ`, `nom`, `prenom`) values (‘Madame’, ‘Dirrectrice’, ‘Laa’)
- Modification (pour modifier un ou plusieurs tuples) :
update `gens` set `nom` = ‘Directrice’, `prenom` = ‘La’ where `nom` = ‘Dirrectrice’
- Suppression (pour effacer un ou plusieurs tuples) :
delete from `gens` where `nom` = ‘Directrice’
- Recherche (pour récupérer des tuples) :
select * from `gens` where `civ` = ‘Madame’
select `nom` from `gens`

Pour executer ces requêtes dans un script PHP, il faut d’abord demander à PHP de se connecter à la base de données (cf. plus bas dans l’exercice, le script mysql2.php). On utilise ensuite la fonction mysql_query.
$query = “insert into `gens` (`civ`, `nom`, `prenom`) values (‘Madame’, ‘Dirrectrice’, ‘Laa’)”;
mysql_query($query);

Lorsqu’on envoie une requête de recherche, on récupère le résultat dans une variable, et on utilise la fonction mysql_fetch_array pour parcourir un à un chaque tuple renvoyé par le SGBD.
$query = “select * from `gens`”; // on récupère tout le contenu de la table ‘gens’
$result = mysql_query($query); // on stocke le résultat dans la variable $result
while ($tuple = mysql_fetch_array($result)) {
// à chaque boucle, $tuple contient un tuple renvoyé, et passé au suivant en fin de boucle
echo “bonjour ”.$tuple[‘civ’].“ ”.$tuple[‘nom’].“<br/>”;
}

Exercice :

1) Récupérez les fichiers mysql0.php, mysql1.html et mysql2.php sur le site angeliquerenaud.com et les enregistrer dans le répertoire www de EasyPHP. Démarrez EasyPHP.

2) Dans un navigateur, ouvrez le fichier http://localhost/mysql0.php. Ce script va créer une base de données « bonjour » contenant une table « gens » avec les champs « nom » et « prenom ». Cette table ne contient pour l’instant qu’une ligne, [« Renaud », « Angélique »].

3) Dans le navigateur, ouvrez http://localhost/home.


Cliquez sur le bouton « ouvrir » à droite de la ligne « Administration MySQL ».
Vous accédez à la page de PHPMyAdmin, un site qui permet de visualiser vos bases de données, les tables et leur contenu. Vérifiez que la base « bonjour » a bien été créée, et affichez le contenu de la table « gens ».


Conservez cette fenêtre ouverte.

4) Dans une nouvelle fenêtre (ou un nouvel onglet), ouvrez l’URL http://localhost/mysql1.html. Vous y retrouvez le formulaire du TP précédent, avec 3 champs de saisie.

5) Pour l’instant, quand vous validez le formulaire, vos nom et prénom sont envoyés au script mysql2.php qui :
– Insère vos nom et civilité dans une nouvelle ligne de la table « gens »,
– affiche les noms et civilités de toutes les lignes de la table « gens ».
Modifiez le script afin d’insérer et d’afficher également le prénom.


Code à recopier