Apprendre à programmer

Afficher des Fichiers PDF depuis une Base de Données en PHP

L’affichage de fichiers PDF sur des sites web est une pratique courante, mais le stockage et la récupération efficaces de ces fichiers, surtout lorsqu’ils sont sauvegardés dans une base de données, peuvent poser des défis. Dans ce guide pratique, nous allons explorer étape par étape comment afficher des fichiers PDF enregistrés dans une base de données sur une page HTML à l’aide du langage de programmation PHP.

Création de la Structure de la Base de Données

Pour commencer, nous devons mettre en place une structure de base de données pour stocker nos fichiers PDF. Nous allons créer une table appelée pdf_files avec les colonnes suivantes :

  • id : un identifiant unique pour chaque fichier PDF, auto-incrémenté pour assurer l’unicité.
  • nom : le nom du fichier PDF.
  • contenu : le contenu réel du fichier PDF, stocké en tant que données BLOB.

Voici un exemple de requête SQL pour créer cette table :

CREATE TABLE pdf_files (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nom VARCHAR(255) NOT NULL,
    contenu LONGBLOB NOT NULL
);
Création du Formulaire de Téléchargement

Nous devons maintenant créer un formulaire HTML permettant aux utilisateurs de télécharger des fichiers PDF sur notre site. Voici à quoi pourrait ressembler ce formulaire :

<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Télécharger un fichier PDF</title>
</head>
<body>
    <h2>Télécharger un fichier PDF</h2>
    <form action="upload.php" method="post" enctype="multipart/form-data">
        <input type="file" name="pdf_file" accept="application/pdf">
        <button type="submit" name="submit">Télécharger</button>
    </form>
</body>
</html>
Gestion du Téléchargement et de l’Enregistrement

Nous devons désormais créer un script PHP (upload.php) pour gérer le téléchargement et l’enregistrement du fichier PDF dans la base de données. Voici un exemple de script :

<?php
if (isset($_POST['submit'])) {
    if (isset($_FILES['pdf_file']) && $_FILES['pdf_file']['error'] === UPLOAD_ERR_OK) {
        // Connexion à la base de données
        $pdo = new PDO('mysql:host=hostname;dbname=nom_de_la_base_de_données', 'nom_utilisateur', 'mot_de_passe');

        // Récupération du nom et du contenu du fichier
        $nom = $_FILES['pdf_file']['name'];
        $contenu = file_get_contents($_FILES['pdf_file']['tmp_name']);

        // Préparation et exécution de la requête d'insertion
        $stmt = $pdo->prepare("INSERT INTO pdf_files (nom, contenu) VALUES (:nom, :contenu)");
        $stmt->bindParam(':nom', $nom);
        $stmt->bindParam(':contenu', $contenu, PDO::PARAM_LOB);
        $stmt->execute();

        // Redirection vers la page d'accueil avec un message de succès
        header("Location: index.php?upload_success=1");
        exit();
    } else {
        echo "Une erreur s'est produite lors du téléchargement du fichier.";
    }
}
?>
Affichage du Fichier PDF Enregistré

Enfin, pour afficher le fichier PDF enregistré dans la base de données sur une page HTML, nous créons une autre page (view_pdf.php) qui récupère et affiche le contenu du fichier PDF. Voici un exemple de script :

<?php
$pdo = new PDO('mysql:host=hostname;dbname=nom_de_la_base_de_données', 'nom_utilisateur', 'mot_de_passe');

if (isset($_GET['id'])) {
    $id = $_GET['id'];

    $stmt = $pdo->prepare("SELECT nom, contenu FROM pdf_files WHERE id = :id");
    $stmt->bindParam(':id', $id);
    $stmt->execute();
    $pdf = $stmt->fetch(PDO::FETCH_ASSOC);

    if ($pdf) {
        header("Content-type: application/pdf");
        echo $pdf['contenu'];
    } else {
        echo "Fichier PDF non trouvé.";
    }
} else {
    echo "ID du fichier PDF non spécifié.";
}
?>

En suivant ces étapes, vous pourrez créer un système robuste pour télécharger, stocker et afficher des fichiers PDF depuis une base de données sur une page HTML, offrant ainsi une expérience utilisateur enrichie sur votre site web. Assurez-vous de remplacer les valeurs de connexion à la base de données (hostname, nom_de_la_base_de_données, nom_utilisateur, mot_de_passe) par les vôtres.

Voici comment vous pourriez illustrer chaque exemple avec du code :

Téléchargement d’un fichier PDF
<!-- Formulaire HTML pour télécharger un fichier PDF -->
<form action="upload.php" method="post" enctype="multipart/form-data">
    <input type="file" name="pdf_file" accept="application/pdf">
    <button type="submit" name="submit">Télécharger</button>
</form>
// Script PHP (upload.php) pour gérer le téléchargement et l'enregistrement du fichier PDF
if (isset($_POST['submit'])) {
    if (isset($_FILES['pdf_file']) && $_FILES['pdf_file']['error'] === UPLOAD_ERR_OK) {
        // Traitement du téléchargement et insertion dans la base de données
    } else {
        echo "Une erreur s'est produite lors du téléchargement du fichier.";
    }
}
Affichage de fichiers PDF dans un tableau de bord
// Affichage des fichiers PDF dans le tableau de bord
$stmt = $pdo->query("SELECT id, nom FROM pdf_files");
while ($row = $stmt->fetch()) {
    echo "<a href='view_pdf.php?id={$row['id']}'>{$row['nom']}</a><br>";
}
Partage sécurisé de documents sensibles
// Vérification des autorisations d'accès aux fichiers PDF
$id_utilisateur = $_SESSION['id_utilisateur']; // Supposons que l'ID de l'utilisateur est stocké en session
$stmt = $pdo->prepare("SELECT id, nom FROM pdf_files WHERE id_utilisateur = :id_utilisateur");
$stmt->bindParam(':id_utilisateur', $id_utilisateur);
$stmt->execute();
while ($row = $stmt->fetch()) {
    echo "<a href='view_pdf.php?id={$row['id']}'>{$row['nom']}</a><br>";
}
Gestion des contrats et des accords
// Affichage des contrats dans une section dédiée du tableau de bord
$stmt = $pdo->prepare("SELECT id, nom FROM pdf_files WHERE type_document = 'contrat'");
$stmt->execute();
while ($row = $stmt->fetch()) {
    echo "<a href='view_pdf.php?id={$row['id']}'>{$row['nom']}</a><br>";
}

Voici comment vous pourriez illustrer chaque cas particulier avec des exemples de code :

Gestion des documents confidentiels
// Vérification des autorisations d'accès aux fichiers PDF sensibles
$id_utilisateur = $_SESSION['id_utilisateur']; // Supposons que l'ID de l'utilisateur est stocké en session
$stmt = $pdo->prepare("SELECT id, nom FROM pdf_files WHERE id_utilisateur = :id_utilisateur AND confidentialite = 'sensible'");
$stmt->bindParam(':id_utilisateur', $id_utilisateur);
$stmt->execute();
while ($row = $stmt->fetch()) {
    echo "<a href='view_pdf.php?id={$row['id']}'>{$row['nom']}</a><br>";
}
Archivage de documents historiques
// Affichage des archives de documents historiques dans une section dédiée
$stmt = $pdo->prepare("SELECT id, nom FROM pdf_files WHERE date_creation < :date_limite");
$date_limite = date('Y-m-d', strtotime('-5 years')); // Exemple : afficher les documents plus anciens que 5 ans
$stmt->bindParam(':date_limite', $date_limite);
$stmt->execute();
while ($row = $stmt->fetch()) {
    echo "<a href='view_pdf.php?id={$row['id']}'>{$row['nom']}</a><br>";
}
Collaboration sur des documents partagés
// Affichage des documents partagés pour collaboration
$stmt = $pdo->query("SELECT id, nom FROM pdf_files WHERE partage = 'public'");
while ($row = $stmt->fetch()) {
    echo "<a href='view_pdf.php?id={$row['id']}'>{$row['nom']}</a><br>";
}
Personnalisation des documents pour les utilisateurs
// Génération d'une facture PDF personnalisée pour un utilisateur spécifique
$id_utilisateur = $_SESSION['id_utilisateur']; // Supposons que l'ID de l'utilisateur est stocké en session
$stmt = $pdo->prepare("SELECT nom_fichier FROM pdf_files WHERE id_utilisateur = :id_utilisateur AND type_document = 'facture'");
$stmt->bindParam(':id_utilisateur', $id_utilisateur);
$stmt->execute();
while ($row = $stmt->fetch()) {
    echo "<a href='view_pdf.php?id={$row['id']}'>{$row['nom']}</a><br>";
}
Audit et traçabilité des documents
// Enregistrement des métadonnées de modification pour un document PDF
$id_document = $_GET['id']; // Supposons que l'ID du document est passé en paramètre d'URL
$id_utilisateur = $_SESSION['id_utilisateur']; // Supposons que l'ID de l'utilisateur est stocké en session
$date_modification = date('Y-m-d H:i:s');
$stmt = $pdo->prepare("INSERT INTO modifications_documents (id_document, id_utilisateur, date_modification) VALUES (:id_document, :id_utilisateur, :date_modification)");
$stmt->bindParam(':id_document', $id_document);
$stmt->bindParam(':id_utilisateur', $id_utilisateur);
$stmt->bindParam(':date_modification', $date_modification);
$stmt->execute();

En utilisant ces extraits de code, vous pouvez voir comment chaque cas particulier est adressé avec des fonctionnalités spécifiques implémentées en PHP pour gérer les fichiers PDF dans une base de données de manière personnalisée et sécurisée.

Recommandés

Exercices corrigés sur la programmation en assembleur...
Voici une série d'exercices corrigés sur...
En savoir plus
Introduction à la Programmation Orientée Objet (POO)
Cet article vise à : Comprendre les...
En savoir plus
Créer une Variable de Session en PHP...
Les variables de session en PHP...
En savoir plus
L'Art de la Transformation en Minuscules en...
La manipulation de chaînes de caractères...
En savoir plus
Comprendre le tri par sélection
Le tri par sélection, un algorithme...
En savoir plus
Qu’est ce qu’une API et son importance...
Dans le domaine du coding, une...
En savoir plus
AZ

Share
Published by
AZ

Recent Posts

Modèle Excel de plan de classification des documents administratifs

Les rouages d’une entreprise se jouent rarement sous les projecteurs. Ce qui apparaît à l’extérieur…

11 heures ago

Pages de garde de mémoire utilisées dans les universités françaises

Quand on prépare un mémoire, on consacre souvent l’essentiel de son énergie au plan, à…

14 heures ago

Modèle Excel d’analyse financière automatisée avec graphiques

Dans beaucoup d’entreprises, l’analyse financière commence souvent de la même manière : une pile de…

17 heures ago

Méthodologie SVT : réussir l’analyse de document en SVT

Télécharger une fiche méthode pratique et utile ⬇️ L’analyse de document en SVT fait partie…

21 heures ago

Méthode des points de vue narratifs en 4ème

Introduction En classe de 4ème, l’étude du récit occupe une place importante dans l’apprentissage du…

1 jour ago

Classification des Documents : Organiser et Automatiser la Gestion Documentaire

Télécharger un Modèle Excel de classification des documents avec suivi automatisé ⬇️ Dans toute organisation…

4 jours ago

This website uses cookies.