CRUD : Gestion de données PHP/MySQL

Youssef Chahir
GREYC — Université de Caen
TODO:
  • Gros problème : on ne peut pas décemment expliquer doctement que l'escape on input c'est pas bien, et utiliser directement PHP comme moteur de templates. L'échappement à la sortie n'est viable qu'avec un très bon système d'affichage qui échappe par défaut. Mais pour être utilisable il faut qu'il rende possible d'inclure facilement des bouts de HTML qui eux-même utilisent des variables et doivent donc les échapper, et là tout de suite c'est un autre projet.
  • La vue du site des couleurs est quand même assez dégueu.

CRUD

Acronyme CRUD Les quatre opérations de base pour la persistance des données :

  1. Search
  2. Create
  3. Read
  4. Update
  5. Delete

CRUD : PHP/MysQL

Les étapes de base pour créer votre mini-site CRUD sont :
  1. Créer une table dans votre base de données MySQL pour stocker les données de votre application : Vous pouvez utiliser l’interface graphique de phpMyAdmin ou utiliser la ligne de commande pour créer les tables.
  2. Créer un formulaire d’ajout : Créez un formulaire HTML avec les champs correspondant aux colonnes de votre table de base de données. Lorsque le formulaire d’ajout est soumis sans erreurs, le script PHP doit être exécuté pour ajouter les données à votre base de données.
  3. Créer une page de lecture : Créez une page de lecture pour afficher tous les enregistrements de votre table de base de données. Vous pouvez utiliser une boucle pour faire une pagination pour n'afficher qu'un certain nombre d'enregistrements par page.
  4. Créer un formulaire de mise à jour : Créez un formulaire HTML avec les champs correspondant aux colonnes de votre table de base de données. On doit pouvoir confirmer ou annuler la mise à jour. Lorsque le formulaire de mise à jour est soumis sans erreurs, le script PHP doit être exécuté pour mettre à jour les données dans votre base de données.
  5. Créer un formulaire de suppression : Créez un formulaire HTML avec un bouton pour supprimer un enregistrement. On doit pouvoir confirmer ou annuler la suppression des données. Lorsque le formulaire de suppression est soumis, le script PHP doit être exécuté pour supprimer l’enregistrement correspondant de votre base de données.

Mise en place d'un (S)CRUD

  • Recherche et visualisation
    • Pagination : sert à limiter le nombre de lignes chargées sur la page.
    • Tris sur les colonnes : implémenter des tris ascendant et descendant (ASC et DESC) pour classer vos facilement vos lignes.
    • Filtres : Ajout de filtres sur les champs différents structurants.
    • Boutons d'actions : Sur chaque ligne de vos listes, vous pouvez afficher des boutons (ou un bouton en dropdown) permettant d'accéder plus simplement aux autres étapes de votre CRUD.
  • Création et édition : La création et la mise à jour d'une entité se fait grâce à un formulaire. le formulaire d'édition est plus riche.
    Ces deux actions doivent intégrer une validation des champs en amont de l'enregistrement en base pour assurer une parfaite intégrité des données.
  • Suppression : La suppression est une étape définitive qui nécessite une étape de confirmation d'action.
    Suivant votre contexte et si votre entité est liée à d'autres, vous pourrez bloquer l'action de suppression en cas de liaison ou choisir des options moins contraignantes comme le set null ou le cascade on delete.

Arborescence du site

_ /racine/
____ /style/
________ /css/
__________ /custom.css
________ /js/
__________ /custom.js
____ /includes/
______ /config.php (fichier pour les informations de configuration générales du site)
______ /db_connect.php (fichier pour la connexion à la base de données)
______ /functions.php (fichier contenant les fonctions réutilisables)
______ /header.php (fichier contenant la section header réutilisable)
______ /footer.php (fichier contenant la section footer réutilisable)
____ /backend ou admin/
______ /index.php (page d’accueil du backend)
______ /login.php (page de connexion du backend)
______ /dashboard.php (page de tableau de bord du backend)
______ /table1/
________ /create.php
________ /read.php
________ /update.php
________ /delete.php
______ /table2/
________ /create.php
________ /read.php
________ /update.php
________ /delete.php
____ /frontend ou public/
______ /index.php (page d’accueil du frontend)

Exemple

<?php
include("frag_deb.php");
require(
'Lib.php');


// Détection de l'action à effectuer
$action = isset($_GET['action']) ? trim($_GET['action']) : null;

switch (
$action) {
    case 
"afficher":
        include(
"select.php");
        break;
    
    case 
"delete":
        include(
'delete1.php');
        break;
    case 
"update":
        include(
'update1.php');
        break;
    
    case 
"saisir"// Saisie via le formulaire
        
$cible='saisir'//insertion des données
        
include('insert.php');
        break;
    case 
"modifier"//un id particulier
        
include('update.php');
        break;
    case 
"supprimer"//un id particulier
        
include('delete.php');
        break;
    default:
        
$zonePrincipale "";
        break;
}
include(
"frag_fin.php");
?>
Résultat

Moteur de recherche

<?php
                 
<form action="traitement_recherche.php" method="GET">
                     <
label for="mot_cle">Mot-clé :</label>
                     <
input type="text" id="mot_cle" name="mot_cle" required>
                     <
br><br>
                     <
button type="submit">Rechercher</button>
                 </
form>
?>