Quelques connaissances de base sont nécessaires avant d'entamer la lecture de cette page. Elles ont été apportées par Sacha dans ce fil sur la structure des bases de données. Je le remercie ici pour ses contributions régulières ;o)
Connexion à une base de données MySQL
Pour communiquer avec MySQL, PHP a besoin d'un "handle", d'un identifiant de connexion. Vous en aurez donc besoin à chaque fois que vous vous voudrez dialoguer avec MySQL. C'est ce que l'on appelle des requêtes MySQL. Les requêtes servent ausi bien à interroger la base de données sur son contenu qu'à intervenir sur la base elle-même par des enregistrements ou des suppressions de données.
<?php $id_connexion=mysql_connect("serveur_mysql","utilisateur","mot_de_passe"); mysql_select_db("nom_de_la_table_mysql",$id_connexion); ?>Création de tables MySQL
Toujours sur la base de notre table "carnet" vue précedement, nous allons créer cette table :
create table carnet ( id_carnet smallint auto_increment unsigned, nom varchar (50), prenom varchar (50), telephone varchar(14), age tinyint (2) unsigned, primary key (id_carnet));NB : naturellement, ce code sera sans effet si vous ne le faites pas précéder du code de connexion. Il en sera de même pour toutes les requêtes qui suivront. La requête sera donc :
<?php $id_connexion=mysql_connect("serveur_mysql","utilisateur","mot_de_passe"); mysql_select_db("nom_de_la_base_mysql",$id_connexion); $requete = " create table carnet ( id_carnet smallint unsigned auto_increment, nom varchar (50), prenom varchar (50), telephone varchar(14), age tinyint (2) unsigned, primary key (id_carnet))"; mysql_query($requete,$id_connexion); ?>Vous pouvez bien sûr vérifier le bon déroulement de l'opération en modifiant la requête d'exécution :
$ok=mysql_query($requete,$id_connexion); if ($ok){echo 'Requête exécutée';} else {echo 'Impossible d\'exécuter cette requête...';}Enregistrement de données
A ce stade, notre table est créée mais ne contient encore aucune information.
Pour insérer des données dans votre table, la manière la plus simple est de créer un formulaire html qui va recueillir les données et dans le même temps les insérer dans votre table. Dans les exemples ci-après, nous ne nous préoccupons pas de l'intégrité des données et n'abordons pas les questions de sécurité. Il vous appartiendra de vérifier le type des données saisies ainsi que leur inocuité (injection de script etc..) Il est question d'apprendre à dialoguer avec MySQL et uniquement de cela.
Un exemple de formulaire permettant d'insérer des données dans une table pourrait basiquement ressembler à la page insertion.php ci-dessous :
<?php $id_connexion=mysql_connect("serveur_mysql","utilisateur","mot_de_passe"); mysql_select_db("nom_de_la_base_mysql",$id_connexion); if (($nom!="")&&($prenom!="")) { $requete = " insert into carnet (nom, prenom, telephone, age) values ('$nom','$prenom','$tel','$age')"; $ok=mysql_query($requete,$id_connexion); if ($ok){echo 'Requête exécutée';} else {echo 'Impossible d\'exécuter cette requête...';} } ?> <html> <body> <form action="insertion.php" method="post"> Nom : <input type="text" name="nom"><br> Prénom : <input type="text" name="prenom"><br> Tél. : <input type="text" name="tel"><br> Age : <input type="text" name="age"><br> <input type="submit" value="valider"><br> </form> </body> </html>Affichage des données issues d'une table
Si vous faites un petit tout par PhPMyAdmin (fourni par la plupart des hébergeurs), votre base de données devrait ressembler à ceci :
![]()
Pour afficher ces mêmes données sur une page web traditionnelle, vous devrez passer par ce code :
<html> <body> <table> <tr><td>Nom</td><td>Prénom</td> <td>Age</td><td>Téléphone</td></tr> <?php $id_connexion=mysql_connect("serveur_mysql","utilisateur","mot_de_passe"); mysql_select_db("nom_de_la_base_mysql",$id_connexion); $requete = " select * from carnet"; $resultat=mysql_query($requete,$id_connexion); while ($tableau=mysql_fetch_array($resultat,MYSQL_ASSOC)) { echo '<tr><td>',$tableau['nom'],'</td><td>',$tableau['prenom'],'</td> <td>',$tableau['age'],'</td><td>',$tableau['telephone'],'</td></tr>'; } ?> </table> </body> </html>Ce qui va restituer un tableau HTML (non formaté ici):
![]()
L'affichage des données et les clauses
Les clauses sont en quelque sorte des conditions dont vous revêtez votre requête afin qu'elle ne retourne que les enregistrements dont vous avez besoin. Si vous ne souhaitez obtenir que le nom ou que le prénom des enregistrements, il vous suffira de modifier votre requête comme ceci :
<?php $requete = " select nom from carnet"; ?>MySQL vous permet d'extraire des données sur la base de critères précis. Ainsi vous désirez obtenir les noms des enregistrements de personnes de - de 40 ans, vous coderez :
<?php $requete = " select nom from carnet where age < 40"; ?>Pour obtenir la liste des enregistrements dont les noms commencent par la lettre "d" :
$requete = " select nom from carnet where nom like 'd%'";Pour obtenir les 2 premiers enregistrements dont les noms commencent par la lettre "d" :
$requete = " select nom from carnet where nom like 'd%' limit 2";