Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Sujets que vous pourriez aussi aimer :
Créer sa première base de données MySql
Cette formation est une étape intermédiaire incontournable dans la poursuite de l'apprentissage des techniques de
programmation Php , pour les
applications serveur . Nous allons créer notre première
base de données MySql . Nous proposons de débuter simplement par la création d'une
table destinée à recevoir les informations d'inscription d'un internaute.
Ce
formulaire d'inscription existe déjà , nous l'avions conçu lors d'une
formation Javascript .
Il propose à l'internaute de s'inscrire en remplissant les informations demandées par les champs du
formulaire . Le
code Javascript scrute les saisies pour vérifier leur présence et leur conformité. Les mails doivent être identiques. Il en va de même pour les mots de passe. La date doit être saisie au format date. Si une saisie est erronée, la bordure de son contrôle apparaît en rouge pour aiguiller l'internaute. Mais nous n'avions pas pu aller plus loin. A l'époque, nous n'avions pas encore abordé les technologies serveur.
Une fois les données considérées comme valides par le
code Javascript , la suite du traitement doit être passée au
code serveur Php . C'est à lui de se charger de l'inscription des informations validées en
base de données . Et en ce sens, nous collons parfaitement à la philosophie
Client-Serveur en équilibrant au mieux les charges. Tout ce qui peut être réalisé par la machine de l'internaute l'est en effet dans cette application. C'est le
code Javascript qui effectue les contrôles de validité. Ainsi, nous ne sollicitons pas inutilement le serveur. Il a déjà fort à faire avec le trafic et les multi-requêtes.
Pour inscrire ces informations en
base de données , encore faut-il qu'elle existe et qu'elle soit déclarée avec ses identifiants de connexion. Ces derniers sont très importants en termes de sécurité. Nous y reviendrons. Et cette
base de données doit proposer une table dédiée pour accueillir précisément les
informations d'inscription .
Les sources que nous proposons de récupérer seront simplement utilisées à titre de guide. En effet, l'objectif de cette formation est de bâtir une première
base de données . Cette base doit offrir une table en corrélation avec les informations saisies dans le
formulaire . Le
code Php interviendra quant à lui à partir de la prochaine formation. Il s'agira de réaliser ces insertions.
Créer une table de base de données MySql
Bien que l'ergonomie proposée par
MySql soit différente, nous allons répliquer les techniques que nous avions apprises pour monter des
bases de données avec
Access . La philosophie des
bases de données est identique d'un utilitaire à un autre. Il s'agit de créer les
champs de table nécessaires et de les typer au plus juste pour économiser les ressources. Une erreur de typage sur un champ, multipliée par des milliers de connexions simultanées, peut vite engorger les ressources du serveur.
A la racine du dossier de décompression, cliquer droit sur le fichier index.php ,
Dans le menu contextuel, choisir de l'ouvrir avec un éditeur tel que le Notepad++,
Comme vous le constatez, dans le
code Javascript , nous avions pris soin d'ajouter l'
attribut maxlength dans les balises de chaque
contrôle Html du
formulaire . Nous limitons ainsi la taille des saisies. Nous pourrons exploiter ces valeurs seuilles pour dimensionner nos champs de table.
Même si dans ce premier volet nous nous concentrerons sur la
base de données et non sur la conception du
code Php , nous pouvons constater la présence des appels en entête et en pied de code. Ils sont réalisés par la
fonction Php include .
<?php
include('commun/entete.php');
?>
<script language='javascript' type='text/javascript'>
...
...
<div class='div_saut_ligne' style='height:150px;'>
</div>
<?php
include('commun/pied.php');
?>
Ils pointent respectivement sur les fichiers
entete.php et
pied.php . Eux-mêmes appellent dans la construction les fichiers externes
ouvrir.php et
fermer.php . Comme leurs noms l'indiquent, le premier permet d'établir la connexion à la base pour permettre les accès. Le second ferme cette connexion. Comme nous l'avions appris en
VBA Access notamment, toute connexion ouverte doit être fermée.
Pour créer une
base de données , sa table et ses champs, le serveur virtuel de base de données doit être démarré.
Ouvrir EasyPhp ,
Sur son interface, cliquer sur le bouton Start pour le http Server ,
De même, cliquer sur le bouton Start pour le DataBase Server ,
De fait,
MySql devient disponible.
Cliquer sur son bouton Open en fin de ligne,
Dès lors, nous accédons à l'interface d'administration des bases de données,
PhpMyAdmin . Le volet de gauche propose la liste des bases de données recensées. Il est vierge pour l'instant. Nous devons créer la toute première.
Dans ce volet de gauche justement, cliquer sur le lien Nouvelle base de données ,
La nommer : bd_gestion par exemple,
Puis choisir le système d'encodage utf8_general_ci avec la liste interclassement ,
Il s'agit d'un interclassement général comme son nom l'indique. Il fonctionne de façon simple et rapide. Il simplifiera de même la gestion des caractères latins et des différences de casses.
Cliquer sur le bouton Créer ,
La
base de données existe désormais. Elle apparaît dans le volet de gauche. Mais elle est encore vide à ce stade. Nous devons créer sa première table, celle permettant d'accueillir les informations des nouveaux inscrits, issus du
formulaire Web que nous avons présenté.
Si le lien de la base de données est toujours actif dans le volet de gauche, l'interface de création de table est justement proposée au centre de l'écran. Pour
créer une nouvelle table , il faut certes la nommer mais aussi connaître le nombre de champs nécessaires. Nous devons accueillir l'information sur la civilité, le nom, le prénom, la date de naissance, le mail et le mot de passe. Nous avons a priori besoin de 6 champs. Mais une
table doit toujours proposer une
clé primaire comme nous l'avions appris avec Access . Une
clé primaire permet d'identifier explicitement chaque enregistrement en lui attribuant un
identifiant unique . Les homonymes existent en effet. Nous pourrions utiliser l'adresse mail pour la clé primaire. Mais un mail n'a pas une durée de vie illimitée contrairement à un numéro de sécurité sociale par exemple. Donc, nous avons besoin d'un septième champ. Et nous demanderons Ã
MySql de le gérer par
auto-incrémentatation . Souvenez-vous, dans les
bases Access , nous typions le champ en
numeroAuto .
Nommer la table : inscr par exemple pour l'abréviation d'inscrits,
Définir 7 colonnes, soit 7 champs en langage de base de données,
Enfin, cliquer sur le bouton Exécuter ,
Nous basculons ainsi directement sur l'interface de création des champs. Pour des raisons de clarté et pour des méthodes professionnelles, il est judicieux de préfixer chacun d'entre eux du nom de la table. Ainsi lorsque nous exécuterons des
requêtes SQL multi tables par le
code PHP , aucune ambiguïté ne sera soufferte, quant aux champs de destination ainsi désignés.
Il est toujours opportun de débuter par la création du champ de la
clé primaire .
Dans la première zone Nom, saisir inscr_num ,
Conserver le type sur Int sans préciser l'information Taille/Valeurs,
Régler les attributs sur Unsigned ,
Dans la colonne Index, choisir Primary ,
Valider la boîte de dialogue qui se déclenche en cliquant sur Exécuter ,
Il s'agit du
champ de la clé primaire . Il doit être
auto-incrémenté donc
numérique , d'où le
type Int . Nous n'avons pas limité sa taille. Si le site a des vocations internationales, nous ne devons pas restreindre ses capacités à accueillir de nouveaux inscrits. Lorsque la taille n'est pas définie, c'est un entier codé sur 11 bits qui est créé. L'
attribut Unsigned permet de spécifier qu'il n'y aura pas de valeur négative. Ainsi, nous augmentons le plafond autorisé pour les numéros positifs incrémentés. Enfin, la
propriété Index est calée sur
Primary pour définir ce champ en
clé primaire , donc comme unique.
Sur la deuxième ligne, dans la zone Nom, saisir inscr_civilite ,
Dans la colonne Type, choisir Varchar ,
Dans la zone Taille/Valeurs, limiter sa capacité à 8 caractères,
Dans la liste Interclassement, choisir utf8_general_ci , comme pour la base de données,
Un
champ de type Varchar permet d'accueillir des chaînes de caractères de longueurs variables. Justement, nous limitons cette taille en cohérence avec la liste déroulante de la civilité sur le
formulaire Web . Le texte le plus long est Monsieur. Il est composé de 8 lettres. Pour les champs suivants, nous limiterons cette taille en cohérence avec l'
attribut maxlength de chaque contrôle respectif.
Créer les autres champs avec les propriétés respectives suivantes :
inscr_nom , Varchar taille 50, utf8_general_ci,
inscr_prenom , Varchar taille 50, utf8_general_ci,
inscr_date , Varchar taille 10, utf8_general_ci,
inscr_mail , Varchar taille 150, utf8_general_ci,
inscr_mp , Varchar taille 10, utf8_general_ci.
Tout en bas de l'interface, définir l'interclassement de la table sur utf8_general_ci ,
Puis, choisir le moteur de stockage MyIsam ,
Ce moteur de stockage est le plus performant pour l'exécution de requêtes de types Select et Insert, celles que nous allons justement exploiter à grande échelle.
Enfin, cliquer sur le bouton Enregistrer ,
La structure de la table apparaît aussitôt, prête à être implémentée. Vous remarquez le symbole de la
clé primaire en regard du premier champ. Il confirme qu'il s'agit bien d'une colonne d'informations uniques.
Vous l'avez remarqué, les possibilités offertes sont nombreuses pour typer les champs. Ici l'objectif était la prise de contact par la création d'une table simple dans une petite
base de données . Il s'agira ensuite de l'enrichir par le code. Nous avons intentionnellement typé la date comme un texte et non comme une date.
Php est capable de recueillir cette chaîne et de l'interpréter en tant que date. Dans les prochaines formations, nous découvrirons les types de données qu'il est possible d'exploiter.
Le champ de la clé primaire a bien été défini. Mais à ce stade, il ne s'incrémente pas tout seul. Nous allons donc modifier cette propriété qui permettra de ne pas devoir le faire par le
code PHP .
Dans la structure de la table, cocher la case du champ inscr_num ,
Puis, cliquer sur le lien Modifier situé en dessous de la table,
Cocher la case de la colonne A.I ,
Puis, cliquer sur le bouton Enregistrer ,
A.I. signifie auto-incrémenté. D'ailleurs, vous notez désormais l'apparition de la mention
Auto_Increment dans la colonne Extra pour le champ inscr_num de la clé primaire.
Nous proposons de tester cette table par l'ajout manuel d'un enregistrement complet.
Cliquer sur l'onglet Insérer en haut de l'interface de PhpMyAdmin,
Dans la colonne Valeur pour le champ inscr_civilite , taper Monsieur ,
Dans le champ inscr_nom , taper Doeuf ,
Dans le champ inscr_prenom , taper John ,
Dans le champ inscr_date , taper 18/06/1982 ,
Dans le champ inscr_mail , taper john.doeuf@outlook.com ,
Dans le champ inscr_mp , taper jd213Hn ,
Enfin, cliquer sur le bouton Exécuter ,
Une interface de confirmation apparaît. Elle indique que la nouvelle ligne a bien été insérée. Elle affiche la
requête SQL qui a été exécutée. C'est cette syntaxe que nous devrons reproduire en Php, afin d'insérer les informations de l'internaute saisies dans le formulaire, dans la
table inscr de la base de données.
Privilèges et droits administrateurs
Nous n'avons pas terminé. Nous devons définir les
droits administrateurs pour sécuriser l'accès. Les informations de bases de données sont confidentielles et précieuses. Elles doivent être protégées, surtout lorsqu'il s'agit de données clients.
Dans le volet de gauche, cliquer sur la table inscr de la base de données bd_gestion,
Nous affichons ainsi les enregistrements de la table. Nous y découvrons celui que nous avons ajouté manuellement. Constatez que le
champ inscr_num s'est rempli lui-même. Nous ne l'avons en effet pas renseigné.
Dans le volet de gauche, cliquer maintenant sur le lien bd_gestion de la base de données,
Puis, en haut de l'interface de PhpMyAdmin, cliquer sur l'onglet Privilèges ,
La base de données doit toujours être sélectionnée avant de définir les informations du compte qui pourra y accéder.
Cliquer alors sur le lien Ajouter un compte d'utilisateur ,
L'interface
Ajouter un compte d'utilisateur apparaît.
Dans la zone Nom d'utilisateur , saisir le texte moimeme par exemple,
Dans la zone nom d'hôte , saisir l'adresse virtuelle locale définie par EasyPhp : 127.0.0.1 ,
Dans la zone Mot de passe , taper : mm127eM par exemple (dernier m en majuscule),
Dans la zone Saisir à nouveau , retaper le mot de passe : mm127eM ,
La sécurité du mot de passe est considérée comme faible. Il faudrait l'allonger, ajouter des caractères spéciaux et mélanger les majuscules et minuscules. Mais il s'agit ici de tests locaux. Donc nous poursuivons.
Plus bas dans l'interface, cocher la case Tout cocher pour les privilèges globaux ,
Ainsi, notre code Php, connecté avec ces identifiants pourra intervenir à tous niveaux sur la base, structure et données.
Enfin, tout en bas de l'interface, cliquer sur le bouton Exécuter ,
Le compte est désormais créé. Nous devrons exploiter ces informations pour accéder à la base de données par le code serveur Php. Ces informations de compte devront être mise à jour au moment de l'achat d'un hébergement. Elles vous seront communiquées automatiquement par l'hébergeur. La base de données devra être importée sur le serveur. Nous aborderons ce sujet en temps voulu.
Cliquer de nouveau sur la base de données bd_gestion dans le volet de gauche,
Puis, cliquer sur l'onglet Privilèges en haut de l'interface de PhpMyAdmin,
La
base de données existe. Elle propose une table capable d'accueillir les informations des nouveaux inscrits. Certes à ce stade, le mot de passe n'est pas encodé, pas encore, chaque chose en son temps. Les
privilèges sont établis. Dans la prochaine formation, nous devrons les définir par le code pour établir la
connexion à la base de données afin d'y inscrire, par
requête SQL , les données de l'internaute saisies dans le
formulaire d'inscription .