Projet App gestion bibliothèque

Création une application web intuitive pour remplacer la gestion manuelle d'une bibliothèque, en centralisant les données et en automatisant les processus critiques (emprunts, réservations, notifications) en PHP / HTML etc..

Admin

12/1/20242 min read

Développement d'un outil complet pour automatiser la gestion des livres, des emprunts et des utilisateurs.

🎯 Objectif

Créer une application web intuitive pour remplacer la gestion manuelle d'une bibliothèque, en centralisant les données et en automatisant les processus critiques (emprunts, réservations, notifications).

🛠️ Réalisation Technique

Stack Utilisée

  • Backend : PHP 8.1 (architecture MVC), MySQL (base de données relationnelle).

  • Frontend : HTML5/CSS3, JavaScript (jQuery), Bootstrap 5.

  • Outils : Composer (dépendances), PHPMailer (notifications), Git (versionnement).

Structure de la Base de Données

sql

CREATE TABLE Livres (

id INT PRIMARY KEY AUTO_INCREMENT,

titre VARCHAR(255) NOT NULL,

auteur VARCHAR(255),

categorie_id INT,

statut ENUM('disponible', 'emprunté', 'réservé') DEFAULT 'disponible', FOREIGN KEY (categorie_id) REFERENCES Categories(id) );

CREATE TABLE Utilisateurs (

id INT PRIMARY KEY AUTO_INCREMENT,

nom VARCHAR(50),

email VARCHAR(100) UNIQUE,

role ENUM('admin', 'bibliothecaire', 'utilisateur'),

mdp_hash VARCHAR(255) );

CREATE TABLE Emprunts (

id INT PRIMARY KEY AUTO_INCREMENT,

livre_id INT,

utilisateur_id INT,

date_emprunt DATE,

date_retour_prevue DATE,

date_retour_effectif DATE, FOREIGN KEY (livre_id) REFERENCES Livres(id), FOREIGN KEY (utilisateur_id) REFERENCES Utilisateurs(id) );

🚀 Fonctionnalités Clés

  1. Gestion des Livres

    • Ajout/édition/suppression avec upload de couvertures (PDF/JPEG).

    • Attribution dynamique de catégories (Roman, Science-Fiction, etc.).

    • Moteur de recherche full-text (titres, auteurs, ISBN).

  2. Système d'Emprunt

    • Calcul automatique des dates de retour (14 jours par défaut).

    • Alerte email (PHPMailer) 3 jours avant l'échéance.

    • Pénalités pour retards (0.50€/jour stockés en base).

  3. Réservations

    • File d'attente pour les livres indisponibles.

    • Notification instantanée (AJAX) lors de la disponibilité.

  4. Sécurité

    • Authentification JWT pour les API.

    • Contrôle d'accès RBAC (ex: seuls les admins peuvent supprimer des livres).

🖥️ Interface Utilisateur

html

<div class="container mt-4"> <h2>Livres Empruntés</h2> <table class="table table-striped"> <thead> <tr> <th>Titre</th> <th>Emprunteur</th> <th>Retour prévu</th> <th>Actions</th> </tr> </thead> <tbody> <!-- Exemple de ligne générée par PHP --> <tr> <td>1984 - George Orwell</td> <td>martin.tendero@email.com</td> <td>15/10/2024 <span class="badge bg-warning">3 jours restants</span></td> <td><button class="btn btn-success btn-sm">Marquer comme retourné</button></td> </tr> </tbody> </table> </div>

Run HTML

🔒 Sécurité

  • Hachage des mots de passe :

    php

    $mdp_hash = password_hash($_POST['mdp'], PASSWORD_BCRYPT);

  • Protection contre les injections SQL :
    Utilisation de requêtes préparées avec MySQLi :

    php

    $stmt = $conn->prepare("INSERT INTO Livres (titre, auteur) VALUES (?, ?)"); $stmt->bind_param("ss", $titre, $auteur);

📈 Statistiques

  • Réduction des erreurs : 70% moins d'erreurs de suivi vs méthode manuelle.

  • Temps de gestion : Emprunts traités en 2 min vs 15 min auparavant.