Application CRUD en PHP et Mysql

Un CRUD en PHP permet de gérer complètement les enregistrements dans une base de données.
Il permet de créer, lire, mettre à jour et supprimer un enregistrement de la base de données à l'aide de PHP.

Définition du CRUD

CRUD est un acronyme pour :

Enregistrement d'un élément dans votre base de données - CREATE

Pour accéder à votre base de données et réaliser des traitements, il faut d'abord créer une connexion entre PHP et le serveur de base de données (MySql).
Pour cela, vous allez récupérer le fichier DbTools.php qui va vous permettre de créer une instance de classe pour la gestion de votre BDD.
Pour chaque fonction CRUD, vous allez ajouter ce fichier dans les pages PHP qui vont réaliser un traitement avec la BDD.

<?php 
//Récupération du fichier de la classe DbTools 
require('DbTools.php');
//Creation de l'objet connecté à la BDD pour réaliser des traitements 
$myBdd = new DbTools; ?>

A partir de maintenant vous pouvez envoyer des informations à votre base de données.

Pour enregistrer des informations dans la base de données, vous devez très souvent récupérer les informations depuis un formulaire HTML.
Il faut commencer par récupérer et stocker ces informations dans des variables PHP (en mémoire) pour ensuite les transmettre à l'aide d'une requête SQL à la base de données.

Voici le code PHP qui récupére les valeurs d'un formulaire et les enregistre en BDD

<?php 
//Récupération du fichier de la classe DbTools 
require('DbTools.php');
//Creation de l'objet connecté à la BDD pour réaliser des traitements 
$myBdd = new DbTools;

//Récupération des variables de formulaire html
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$email = $_POST['email'];
$motDePasse = $_POST['motDePasse'];

//Création de la requête SQL permettant d'ajouter un enregistrement en BDD
$sqlInsert = "INSERT INTO user (nom, prenom, email, mdp) VALUES ('$nom', '$prenom', '$email', '$motDePasse')";

//Execution de la requête SQL (query) à l'aide de notre objet de connexion à la BDD 
$myBdd->query($sqlInsert);

Affichage des éléments de votre base de données - READ

Nous allons apprendre à récupérer l'ensemble des éléments d'une table de votre BDD et ensuite comment récupérer un élément en particulier.

Récupéaration de tous les enregistrements

Voici le code PHP qui récupére tous les enregistrements d'une table de votre BDD

<?php 
//Récupération du fichier de la classe DbTools 
require('DbTools.php');
//Creation de l'objet connecté à la BDD pour réaliser des traitements 
$myBdd = new DbTools;

//Création de la requête SQL qui va récupérer toutes les infos d'une table
$sqlSelect = 'SELECT * FROM user';

//Execution de la requête SQL (query) à l'aide de notre objet de connexion à la BDD 
//PHP retourne un élement qui contient le resultat et plein d'autres informations
$resultSet = $myBdd->query($sqlSelect);

//Extraction du résultat dans un tableau '$listeMembres'
//Chaque ligne du tableau stocke l'information sous forme de classe objet (PDO::FETCH_CLASS)
$listeMembres = $resultSet->fetchAll(PDO::FETCH_CLASS); 

Nous allons ensuite afficher l'ensemble des membres dans un tableau HTML pour que ce soit lisible.
Pour cela nous allons utiliser la boucle PHP foreach().

<?php 
foreach ($listeMembres as $membre):
            //chaque colonne selectionnée de la table est liée à un attribut de classe
            echo $membre->nom; //ici l'attribut 'nom' represente la colonne 'nom' de la table
        endforeach;

Affichage de la liste des résultats dans un tableau Html

   
   <table>
    <thead>
        <th>ID</th>
        <th>Nom</th>
        <th>prenom</th>
        <th>email</th>
    </thead>
    <tbody>
        <?php
        foreach($listeMembres as $membre):
            ?>
            <tr>
                <td><?= $membre->id ?></td>
                <td><?= $membre->nom ?></td>
                <td><?= $membre->prenom ?></td>
                <td><?= $membre->email ?></td>
            </tr>
            <?php
        endforeach;
        ?>
    </tbody>
</table>

Récupéaration d'un seul enregistrement

<?php 
//Récupération du fichier de la classe DbTools 
require('DbTools.php');
//Creation de l'objet connecté à la BDD pour réaliser des traitements 
$myBdd = new DbTools;

//Création de la requête SQL qui va récupérer toutes les infos d'une table
$sqlSelect = 'SELECT * FROM user WHERE userId = \'18\'';

//Execution de la requête SQL (query) à l'aide de notre objet de connexion à la BDD 
//PHP retourne un élement qui contient le resultat et plein d'autres informations
$resultSet = $myBdd->query($sqlSelect);

//Extraction du résultat dans la variable '$membre' sous forme d'objet (PDO::FETCH_CLASS)
$membre = $resultSet->fetch(PDO::FETCH_CLASS); 

//Affichage du resultat avec HTML
 <h2>Information sur le membre <?=$membre->prenom?> <?=$membre->nom?></h2>
<ul>
    <li>email :<?=$membre->email?></li>
</ul>

Supprimer un élémenent de la base de données - DELETE

Pour supprimer un élément de votre base de données, nous allons créer un fichier "delete.php" qui va récupérer l'Id de l'enregistrement à supprimer.
Pour passer des parametres dans l'url on utilise le caractère ? à la fin de l'url suivit du nom des variables et leurs valeurs.
Pour séparer des variables et leurs valeurs on utilise le caractère &
L'Id sera passé dans l'URL comme variable d'URL ex : monsite.fr/delete.php?id=10&name=kevin&action=delete.
Pour récupérer les valeurs des paramètres d'URL en PHP non utilisons le tableau prédéfini $_GET['maVariable'].

Supprimer un enregistrement

<?php 
//Récupération du fichier de la classe DbTools 
require('DbTools.php');
//Creation de l'objet connecté à la BDD pour réaliser des traitements 
$bddConnect = new DbTools;

//Récupération de l'id à supprimer
$userId = $_GET['id'];

//Création de la requête SQL qui va supprimer un element
$sqlDelete = "DELETE FROM user WHERE userId = '$userId'";

//Execution de la requête SQL (query) à l'aide de notre objet de connexion à la BDD 
$bddConnect->query($sqlDelete);