Base de données

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.

Comment accéder à phpMyAdmin ?

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.

Créer une base de données

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 :

  • Nom indiquez : id
  • Type : INT
  • Cochez la case A_I : pour Auto-incrément, c'est-à-dire qu'à chaque fois qu'un nouveau utilisateur va être créer, ID sera augmenté de 1. Une fenêtre s'ouvre, pour vous demander si c'est la clé primaire, cliquez Exécuter

Pour les lignes suivantes, indiquez le nom (sans espace, concis et sans accent).
Dans Type indiquez si la valeur est :

  • un nombre (INT),
  • un texte (VARCHAR),
  • un texte long TEXT
  • une date DATE
  • .

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

Se connecter à la base de donné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'];

Restreindre la requête

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

Ajouter des données dans une base de données

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.