Skip to content

Errante-Creation/phppdo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cours CRUD PHP - Système de Gestion de Bibliothèque

📚 Introduction

Ce projet est un exemple pratique d'implémentation des opérations CRUD (Create, Read, Update, Delete) en PHP avec MySQL. Il simule un système de gestion de bibliothèque permettant de gérer les membres et d'afficher les livres.

🎯 Objectifs pédagogiques

À la fin de ce cours, vous saurez :

  • Établir une connexion sécurisée à une base de données MySQL avec PDO
  • Implémenter les 4 opérations CRUD en PHP
  • Utiliser des requêtes préparées pour la sécurité
  • Gérer les formulaires HTML avec PHP
  • Structurer un projet web simple

📁 Structure du projet

crud/
├── connect.php     # Configuration et connexion à la base de données
├── books.php       # Affichage de la liste des livres (READ)
├── book.php        # Affichage du détail d'un livre (READ)
├── members.php     # Gestion complète des membres (CRUD)
└── README.md       # Ce fichier

🗄️ Structure de la base de données

Le projet utilise une base de données MySQL nommée bibliotheque avec les tables suivantes :

Table livres

  • id_livre (INT, PRIMARY KEY, AUTO_INCREMENT)
  • titre (VARCHAR)
  • annee_publication (YEAR)
  • fk_id_auteur (INT, FOREIGN KEY)

Table auteurs

  • id_auteur (INT, PRIMARY KEY, AUTO_INCREMENT)
  • nom_auteur (VARCHAR)
  • prenom_auteur (VARCHAR)

Table membres

  • id_membre (INT, PRIMARY KEY, AUTO_INCREMENT)
  • nom_membre (VARCHAR)
  • prenom_membre (VARCHAR)
  • email (VARCHAR)
  • date_inscription (DATE)

📖 Analyse détaillée des fichiers

1. connect.php - Connexion à la base de données

Ce fichier établit la connexion à la base de données en utilisant PDO (PHP Data Objects).

<?php
// Configuration de la base de données
$host = 'localhost';
$dbname = 'bibliotheque';
$username = 'bibli2025';
$password = 'pass1234';

try {
   // Création de la connexion PDO
   $pdo = new PDO(
      "mysql:host=$host;dbname=$dbname;charset=utf8",
      $username,
      $password,
      [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
   );
} catch (PDOException $e) {
   die("Erreur de connexion : ".$e->getMessage());
}

Points clés :

  • Utilisation de PDO pour la portabilité
  • Gestion des erreurs avec try/catch
  • Configuration du mode d'erreur en exception
  • Définition du charset UTF-8

2. books.php - Liste des livres (READ)

Ce fichier affiche la liste de tous les livres disponibles.

Fonctionnalités :

  • Récupération de tous les livres avec une requête SELECT
  • Affichage sous forme de liste avec liens vers le détail
  • Utilisation de fetchAll() pour récupérer tous les résultats

Concepts abordés :

  • Requêtes préparées avec prepare()
  • Exécution avec execute()
  • Boucle foreach pour l'affichage
  • Liens dynamiques avec paramètres GET

3. book.php - Détail d'un livre (READ)

Affiche les détails d'un livre spécifique avec les informations de l'auteur.

Fonctionnalités :

  • Validation des paramètres GET
  • Jointure LEFT JOIN entre les tables livres et auteurs
  • Affichage du détail d'un seul livre

Concepts abordés :

  • Validation des entrées utilisateur (is_numeric())
  • Requêtes avec jointures
  • Utilisation de fetch() pour un seul résultat
  • Paramètres nommés dans les requêtes préparées

4. members.php - Gestion complète des membres (CRUD)

Ce fichier implémente toutes les opérations CRUD pour la gestion des membres.

CREATE - Création d'un membre

// Formulaire d'ajout
<form action="#" method="post">
   <label for="prenom">Prénom :</label>
   <input type="text" name="prenom" id="prenom">
   <!-- autres champs -->
   <input type="submit" name="register" value="Ajouter l'utilisateur">
</form>

// Traitement PHP
$stmt = $pdo->prepare('INSERT INTO membres(nom_membre, prenom_membre, email, date_inscription) VALUES(:nom, :prenom, :email, :dateinscription)');
$stmt->execute(array(
   'nom' => $nom,
   'prenom' => $prenom,
   'email' => $email,
   'dateinscription' => date('Y-m-d')
));

READ - Lecture des membres

// Récupération de tous les membres
$stmt = $pdo->prepare('SELECT * FROM membres');
$stmt->execute();
$members = $stmt->fetchAll();

// Affichage en tableau HTML
foreach($members as $member): ?>
   <tr>
      <td><?=$member['prenom_membre'] ?></td>
      <td><?=$member['nom_membre'] ?></td>
      <!-- autres colonnes -->
   </tr>
<?php endforeach;

UPDATE - Modification d'un membre

// Formulaire pré-rempli avec les données existantes
$stmt = $pdo->prepare('SELECT nom_membre, prenom_membre, email FROM membres WHERE id_membre=:id');
$stmt->execute(array('id' => $id));
$member = $stmt->fetch();

// Mise à jour
$stmt = $pdo->prepare('UPDATE membres SET nom_membre=:nom, prenom_membre=:prenom, email=:email WHERE id_membre=:id');
$stmt->execute(array(
   'nom' => $nom,
   'prenom' => $prenom,
   'email' => $email,
   'id' => $id
));

DELETE - Suppression d'un membre

// Confirmation avant suppression
if($_GET['confirmation'] === "ok"){
   $stmt = $pdo->prepare('DELETE FROM membres WHERE id_membre=:id');
   $stmt->execute(array('id' => $id));
   
   if($stmt->rowCount() > 0){
      header('Location: members.php');
   }
}

🔒 Sécurité implémentée

  1. Requêtes préparées : Protection contre les injections SQL
  2. Validation des entrées : Vérification des types et valeurs
  3. Échappement des sorties : Utilisation de <?= pour l'affichage sécurisé
  4. Gestion des erreurs : Try/catch et vérifications

🎨 Interface utilisateur

  • CSS intégré pour le styling des tableaux
  • Navigation intuitive entre les modes (lecture, création, édition, suppression)
  • Formulaires responsives avec validation côté serveur
  • Messages de confirmation pour les actions critiques

🔄 Flux de navigation

members.php
├── Mode lecture (par défaut)
│   ├── Affichage de tous les membres
│   └── Liens vers création, édition, suppression
├── Mode création (?mode=creation)
│   ├── Formulaire d'ajout
│   └── Traitement POST
├── Mode édition (?mode=edition&id=X)
│   ├── Formulaire pré-rempli
│   └── Traitement POST pour mise à jour
└── Mode suppression (?mode=suppression&id=X)
    ├── Demande de confirmation
    └── Suppression définitive

🛠️ Installation et configuration

  1. Serveur web : WAMP, XAMPP, ou serveur Apache/Nginx
  2. PHP : Version 7.4 ou supérieure
  3. MySQL : Version 5.7 ou supérieure
  4. Base de données : Créer la base bibliotheque avec les tables appropriées

📚 Ressources complémentaires


Ce projet est conçu à des fins pédagogiques pour apprendre les bases du développement web avec PHP et MySQL.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages