Une base de données (BDD) permet d'enregistrer et de ranger l'information.
C'est le SGBD, (Sytèmes de Gestion de Bases de Données) qui se charge du stockage des données.
C'est grâce à PHP que l'on va faire des requêtes SQL.
Pour accéder à phpMyAdmin, rendez vous sur l'adresse localhost/phpMyAdmin. Il est très rare d'utiliser cette page une fois que la base de données est créee.
Si ça ne fonctionne pas, c'est que phpMySql n'est pas installé sur votre PC (via Laragon). Suivez ce tuto, il explique pas à pas : Installer phpMyAdmin.
Lorsque vous êtes sur la page phpMyAdmin, vos identifiants sont : root pour l'utilisateur et vide pour le mot de passe. Cliquez sur Exécuter pour vous identifier.
Cliquez sur Nouvelle base de données dans la partie gauche.
Indiquez le nom de votre base de données et cliquez sur Créer
Maintenant on va créer les tables qui vont être à l'intérieur de la base de données. Une base de données peut contenir plusieurs tables.
Entrer le nom de votre table (utilisateurs, articles, ...) et cliquez sur Exécuter
Dans l'exemple, il y a 4 colonnes, c'est à vous de voir, si vous avez besoin de plus ou moins de données dans cette table.
Par exemple, pour une table utilisateur, on pourra avoir besoin du nom, du prénom, de la date de naissance, de l'adresse, de son numéro de téléphone, ... .
Mais on peut juste avoir besoin d'un pseudo et d'un mot de passe ...
Toutes vos tables doivent avoir un id qui est unique à votre table, c'est l'identifiant de la ligne
La première ligne est l'ID
Pour la première ligne :
Pour les lignes suivantes, indiquez le nom (sans espace, concis et sans accent).
Dans Type indiquez si la valeur est :
Si c'est un VARCHAR, indiquez la taille qui va de 1 à 255 caractères. Indiquez 255 dans Taille/Valeurs
Pour tester, on va mettre des informations dans la base de données, pour la suite du cours.
Cliquez sur le nom de votre table
Cliquez sur Insérer
Ici, c'est l'interface graphique pour insérer des données très facilement. Remplissez les champs (inutile de remplir le champs id).
Une fois les champs remplis, cliquez sur Exécuter.
Cliquez sur Parcourir pour voir les données enregistrées
Une fois que la base de données est crée on va voir comment récupérer ses données
PHP
1 2 3 4 5 | <?php $bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', ''); ?> |
La première étape est de se connecter à la base de données afin de récupérer les données à l'intérieur.
Le code entier pour se connecter à la base de donnée :
1 2 3 4 5 6 7 8 9 10 11 12 | <?php try { $bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', ''); } catch (Exception $e) { die('Erreur : ' . $e->getMessage()); } ?> |
Ce code permet d'avoir d'afficher les erreurs si il y a quelque chose qui ne se passe comme prévu
PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <?php try { $bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', ''); } catch (Exception $e) { die('Erreur : ' . $e->getMessage()); } $reponse = $bdd->query('SELECT * FROM utilisateurs'); while ($donnees = $reponse->fetch()) { ?> <p><b>Pseudo :</b> <?php echo $donnees['pseudo']; ?></p> <p><b>Mot de passe:</b> <?php echo $donnees['motdepasse']; ?></p> <p><b>Email:</b> <?php echo $donnees['email']; ?></p> <?php } $reponse->closeCursor(); ?> |
Résultat
On va décomposer :
PHP
1 2 3 | <?php $reponse = $bdd->query('SELECT * FROM utilisateurs'); ?> |
Une fois qu'on s'est connecté à la base de donnée, on va récupérer les données dans notre base. La variable $reponse
contient toutes les données de la requête SQL
SQL
SELECT * FROM utilisateurs
À l'intérieur de la parenthèse et des guillemets on met la requête SQL.
Dans l'exemple on a selectionné tout ce qu'il y a dans la table utilisateur avec le SELECT *
FROM
permet d'indiquer où on veut selectionner les données.
PHP
1 2 3 | <?php while ($donnees = $reponse->fetch()) { |
Ensuite en fait une boucle qui va chercher toutes les entreées, si on a 2 lignes dans notre base de données, on affichera les deux lignes, si on a 3 000 000 000 000, ça affichera les 3 000 000 000 000
PHP
1 | <?php echo $donnees['pseudo']; ?> |
Pour faire simple, la variable $donnees
est un tableau dans lequel on va chercher les données que l'on souhaite afficher.
On utilise echo
pour écrire la donnée et les mettre en forme.
$donnees['nomduchamps'];
Dans l'exemple ci-dessus, on a récupérer toutes les données de la base de données. Pour l'instant ce n'est pas grâce, car on a peu de données, mais avec le temps, la base de données va grossir. Le temps de réponse de la requête va donc être allongé. Il vaut mieux effectuer des requêtes uniquement sur ce qu'on veut récupérer.
PHP
1 2 3 4 5 6 7 8 | <?php $reponse = $bdd->query('SELECT pseudo FROM utilisateurs'); while ($donnees = $reponse->fetch()) { echo "<p>Pseudo : " . $donnees['pseudo'] ."</p>"; } ?> |
SQL
SELECT pseudo FROM utilisateurs
On restreint la requête uniquement aux pseudo
Voici un lien pour voir toutes les requêtes SQL que vous pouvez faire Requête SQL
Maintenant on va rentrer dans le vif du sujet, comment enregistrer des données ?
Commence par le formulaire
HTML
1 2 3 4 5 6 | <form method="POST"> <input type="text" name="pseudo" placeholder="pseudo"> <input type="text" name="motdepasse" placeholder="mot de passe"> <input type="mail" name="email" placeholder="email"> <input type="submit" value="Envoyer"> </form> |
PHP
1 2 3 4 5 6 7 8 9 10 11 12 | <?php try { $bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', ''); } catch (Exception $e) { die('Erreur : ' . $e->getMessage()); } $req = $bdd->prepare('INSERT INTO utilisateurs(pseudo, motdepasse, email) VALUES (?,?, ?)'); $req->execute(array($_POST['pseudo'], $_POST['motdepasse'], $_POST['email'])); |
Ce code permet d'insérer les données dans la table utilisateurs
On décompose :
1 2 | <?php $req = $bdd->prepare('INSERT INTO utilisateurs(pseudo, motdepasse, email) VALUES (?,?, ?)'); |
Cette ligne permet de faire une requête préparer. C'est une façon de faire une requête plus sécuriser, ça évite les injections de requête SQL...
PHP
1 2 | <?php $req->execute(array($_POST['pseudo'], $_POST['motdepasse'], $_POST['email'])); |
Ici on dit quelles valeurs on veut ajouter.
$_POST['name']
correspond au nom de l'attribut name
dans le formulaire.