Créer et utiliser une base de données MySQL
MySQL est un serveur de bases de données relationnelle, libre et open source, distribué sous licence GNU (GPL).
Une base de données relationnelle est une base de données dans laquelle les informations sont placées dans des tableaux à deux dimensions appelés tables.
MySQL et PHP sont souvent utilisés ensemble et font partie des offres d'hébergement proposées par les hébergeurs de sites Web.
MySQL permet, au sein d'une même base, d'utiliser des moteurs différents pour différentes tables. Parmi les nombreux moteurs existants, on rencontre notamment les moteurs MyISAM, InnoDB, CSV...
• MyISAM est un moteur performant et simple à mettre en œuvre et à utiliser mais qui ne supporte pas les clés étrangères (clés permettant de gérer des relations entre plusieurs tables afin de garantir la cohérence des données) ni les transactions (une transaction est un ensemble de requêtes qui doivent être exécutées comme un tout cohérent). Le moteur MyISAM est donc bien adapté au cas d'une application utilisant une base de données simple et dont la cohérence des données n'est pas critique.
• InnoDB permet de gérer les transactions et les clefs étrangères mais conduit à une occupation disque plus importante pour les bases de données qui l'utilisent.
• CSV est un moteur qui utilise des fichiers textes au format CSV pour stocker les données ;
phpMyAdmin est un outil proposé par les hébergeurs (dans leurs offres d'hergement de sites web) qui permet de gérer facilement depuis le navigateur de l'internaute, à l'aide d'une interface graphique, les bases MySQL qui font partie de l'offre d'hébergement.
Lorsque l'internaute envoie une requète HTTP à internet (quand il appelle une page web depuis son navigateur), internet transmet cette requète au serveur PHP de l'hébergeur qui héberge cette page. Le serveur PHP de l'hébergeur récupère alors la page correspondante. Si celle ci est écrite en langage PHP, il la transforme en langage HTML avant de la renvoyer sinon il la renvoit telle quelle. Si le code PHP de la page contient des requètes MySQL, le serveur PHP adresse ces requètes au serveur MySQl concerné qui (selon la requète) écrit ou lit dans la base de données et renvoit au serveur PHP les données demandées. Le serveur PHP met alors la réponse sous forme HTML et l'envoie à l'internaute. Le schéma suivant illustre ce fonctionnement d'ensemble.
1) Créer une base de donnée avec phpMyAdmin
1.1) Hébergeurs et offres d'hébergement
Dans leurs offres d'hébergement, les hébergeurs incluent la possibilité pour le client d'utiliser une (ou plusieurs) base(s) de données MySQL dont la capacité en volume dépend de l'offre d'hébergement.
Par exemple, à la date du 15 janvier 2019, dans ses offres d'hébergement mutualisé, l'hébergeur Phpnet inclue :
• 1 base de donnée MySQl de 25Mo dans sa formule Eco
• 3 bases de donnée MySQl de 50Mo chacune dans sa formule Mutu Start
• 5 bases de donnée MySQl de 400Mo chacune dans sa formule Mutu Boost
• 6 bases de donnée MySQl de 800Mo chacune dans sa formule Mutu Max
1.2) Création d'une base de données
Après paiement de l'offre d'hébergement par le client, l'hébergeur active l'espace PHP-MySQL correspondant. Pour créer une base de donnée MySQL, à l'aide de l'outil phpMyAdmin, on peut alors procéder de la façon suivante qui est utilisée ici avec l'hébergeur Phpnet mais qui est comparable quel que soit l'hébergeur.
1) On se connecte au panel client de l'hébergeur
2) Une fois dans le Panel client, on clique sur l'onglet "Hébergement mutualisé"
puis sur le lien correspondant au nom de l'hébergement.
Dans la page de synthèse de l'hébergement, on se place alors dans la rubrique correspondant à la base de données.
Par exemple, avec l'offre Mutu Start de Phpnet, cette rubrique apparaît avec le titre "VOS BASES DE DONNEES MYSQL - 1 BASE SUR 3".
On clique alors le bouton "Créer une base de données"
Un boîte de dialogue s'ouvre alors automatiquement, demandant si l'on souhaite créer une base de données avec les réglages par défaut ou en fixant soi même les réglages en mode expert.
Pour cette première création, dans un souci de simplicité, on choisit le mode par défaut.
Un message apparaît alors, indiquant que que la base MySQL a bien été créée et affichant les informations suivantes données automatiquement par Phpnet :
• le nom du serveur (hote de connexion ou host) sur lequel se trouve cette base
• le nom de cette base de donnée sur le serveur. Le nom de la base qui dépend de l'hébergement et du nom de domaine du site (on l'appelera ici nom_de_la_base)
• le nom d'utilisateur (login) et le mot de passe (password) à utiliser pour se connecter à cette base de donnée
Pour accéder à la base de donnée, on se place dans la rubrique correspondant à la base de données et on clique le bouton en forme de disque
Dans l'écran qui s'ouvre, on clique alors le nom de la base, présenté sous forme de lien situé à gauche juste sous le texte "information_schema"
Dans l'écran qui s'ouvre, un message indique qu'aucune table n'a été trouvée dans cette base de données.
Cela est normal puisque pour le moment on a créé aucune table.
1.3) Création d'une table dans la base de données
Pour créer une table, on commence par indiquer le nom de cette table et le nombre de colonnes dans les champs correspondants.
Si on veut créer une table des membres d'un club par exemple,
dans le cadre d'un projet de création d'un espace membre,
et si l'on souhaite prendre en compte le nom, le prénom et l'année de naissance de chaque membre (soit 3 informations),
on écrira membres dans le champs nom de la table et 3 dans le champs nombre de colonnes de cette table.
Puis on clique le bouton Exécuter.
phpMyAdmin présente alors un écran demandant de décrire la nature des trois champs (colonnes) qui constituent la table.
phpMyAdmin propose par défaut d'utiliser le moteur InnoDB, ce que l'on peut modifier,
si on le souhaite, en MyIsam par exemple.
On remplit ces champs puis on clique Enregistrer
Un écran s'affiche alors automatiquement, affichant la structure de la table.
1.4) Modification du mot de passe d'accès à la base
Une fois la base de données nom_de_la_base et la table membres créées depuis le panel client,
on va modifier le mot de passe donné par Phpnet et le remplacer par un mot de passe adapté à notre besoin.
Pour cela, dans la rubrique du Panel client correspondant à la base de données, on clique le bouton Plus
puis l'option Modifier le mot de passe
Dans la boîte de message qui s'ouvre, on saisit et on confirme le nouveau mot de passe
puis on clique le bouton Modifier le mot de passe.
Un message s'affiche alors automatiquement indiquant que le nouveau mot de passe va être opérant sous 5 minutes.
1.5) Insertion de données dans la base de données
On va maintenant faire la suite des opérations non plus depuis le Panel Client Phpnet mais depuis l'interface phpMyAdmin proposée par Phpnet. Pour cela on se connecte à l'aide du navigateur à l'adresse suivante : https://sql.phpnet.org/
dans la boîte de dialogue qui s'ouvre, on saisit les informations qui ont été données précédemment par Phpnet :
• nom d'utilisateur de la base(login) et le mot de passe (password) à utiliser pour se connecter à cette base de donnée
• mot de passe (password)
• nom du service associé à l'hébergement chez Phpnet (mutualisé ou SQL Gold)
• nom du serveur (hote de connexion ou host) sur lequel se trouve la base de données
Une fois ces informations renseignées, on clique le bouton Se connecter
On se retrouve alors dans phpMyAdmin et, comme précédemment, il suffit de cliquer
le nom de la base de données pour pouvoir travailler avec elle.
Dans la ligne correspondant à la table membres, on clique le bouton Parcourir
phpMyAdmin indique que MySQl a retourné un résultat vide. Cela est normal puisque pour le moment aucun information
n'a été insérée dans la table .
Pour insérer des informations dans la table, on clique le bouton Insérer.
Dans l'écran qui s'ouvre on saisit un premier enregistrement dans la table membres. On saisit par exemple
nom: dupont, prenom: jacques et annee : 1951 puis on clique Exécuter
phpMyAdmin indique que la ligne a bien été insérée dans la table et affiche la syntaxe de cette requète.
L'indication de cette syntaxe est intéressante car on peut ainsi ultérieurement l'utiliser facilement
et sans risque d'erreur, en tant que de besoin, dans du code PHP
En cliquant le bouton Parcourir, on affiche le contenu de la table membres qui contient désormais une ligne
En utilisant les boutons Insérer et Parcourir,
on peut ainsi insérer autant de lignes que l'on veut dans la table et vérifier leur bonne prise en compte
2) Lire le contenu de la base de donnée avec PHP
2.1) Lecture directe
On commence par écrire le fichier suivant qu'on appelera connect.php par exemple et qui permettra de se connecter à la base de donnée.
On écrit ensuire le fichier lire.php suivant qui permet de lire et afficher directement le contenu de la base de données.
Quand on appelle la page lire.php depuis un navigateur, le résultat obtenu est le suivant
Code source
connect.txt
lire.txt
2.2) Lecture par l'intermédiaire d'un formulaire
Pour afficher de façon interactive des enregistrements souhaités dans une base de donnée, une solution simple consiste à saisir dans un formulaire la valeur d'un champ pour lequel on souhaite voir afficher ces enregistrements. Par exemple on peut souhaiter voir afficher tous les enregistrements de la base de données pour lesquels le champs nom possède la valeur "durant"
Dans l'exemple suivant, le fichier formulaire2.php contient un zone de saisie d'une valeur de recherche pour le champs nom de la table membres de la base de données.
Une fois la valeur du nom saisie par l'utilisateur, le fichier formulaire2.php appelle le fichier lire2.php qui recherche puis affiche les enregistrements concernés. On peut remarquer que lorsqu'on envoie un formulaire en utilisant la méthode de transmission get, les données transmises ("durant" dans notre exemple) au fichier destinataire (lire2.php dans notre exemple ) sont transmises en étant placées à la suite du nom de l'url appelée. Dans notre exemple, l'information saisie ("nom=durant") est placée à la suite de l'url "http://mon-nom-de-domaine/mon-repertoire/lire2.php" avec la syntaxe "?nom=durant".
Il est également possible de renvoyer les données d'un formulaire en utilisant la méthode post à la place de la méthode get. Le principe est le même mais avec la méthode post, les données retournées n'apparaissent pas dans la barre d'adresse car elles sont envoyées séparemment. Cette méthode permet également d'envoyer davantage de données, en terme de taille limite autorisée par la configuration php par défaut du serveur. C'est pourquoi on utilise souvent la méthode get lorsque les données envoyées ne sont pas trop nombreuses ni sensibles (pas de présence d'un mot de passe par exemple) et on utilise la méthode post dans le cas contraire. Le schéma suivant illustre le fonctionnement d'ensemble (fonctionnement identique avec la méthode get mais où ici la donnée "dupont" est envoyée séparemment et non plus dans la barre d'adresse du navigateur).
Code source :
formulaire2.txt
lire2.txt
3) Modifier le contenu de la base de donnée avec PHP
Pour ajouter un enregistrement à la table membres, par l'intermédiaire d'un fichier ajouter.php,
on récupère les données
du formulaire formulaire.php qui a appelé le fichier ajouter.php puis on se connecte à la base de données.
On effectue alors une requête php avec la syntaxe suivante:
$requete = "INSERT INTO membres (nom, prenom, annee) VALUES ('$nom','$prenom','$annee')";
Pour supprimer un enregistrement de la table membres, par l'intermédiaire d'un fichier
gestion.php, on récupère les données
du formulaire formulaire.php qui a appelé le fichier gestion.php puis on se connecte à la base de données.
On effectue alors une requête php avec la syntaxe suivante:
$requete = "DELETE FROM membres WHERE nom='$nom'";
4) Programme de gestion complet
On regroupe l'ensemble des fonctionnalités évoquées précédemment, dans les deux fichiers
formulaire.php et gestion.php suivants qui permettent de :
• Afficher le contenu de la table membres
• Ajouter un enregistrement dans cette table
• Supprimer un enregistrement dans cette table
le fichier gestion.php utilise le fichier connect.php qui contient les droits d'accès à la base de données.
Le fichier formulaire.php affiche l'écran suivant.
Le bouton Afficher conduit à l'affichage du contenu de la table membres.
Le bouton Ajouter conduit à l'ajout d'un enregistrement dans table membres.
Le bouton Supprimer conduit à la suppression d'un enregistrement dans table membres.
Le lien Retour au formulaire permet de revenir au formulaire pour effectuer l'opération suivante.
Le code source des trois fichiers connect.php, formulaire.php et gestion.php
est contenu dans l'archive suivante créée avec Xarchiver
gestion.tar.bz2