Tous les cours gratuit

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.

Autres articles

Exercices de Programmation Corrigés sur le Microprocesseur...
Le microprocesseur Motorola 6809 est un processeur 8 bits très...
Read more
Programmation ISO (ou G-code) : Guide
La programmation ISO (ou G-code) est un langage standard utilisé...
Read more
Exercices Corrigés Programmation ISO en tournage CNC
Voici une série d'exercices corrigés sur la programmation ISO en...
Read more
AZ

Recent Posts

Guide : Exemple de Commentaire Composé Corrigé

Le commentaire composé est un exercice littéraire qui consiste à analyser un texte en respectant…

3 heures ago

Règles générales pour l’accord des adjectifs masculin/féminin

Les adjectifs liés en français sont les adjectifs qui s’accordent en genre (masculin/féminin) et en…

3 heures ago

Masculins Féminins : Liste des mots piégeux et mots composés

Voici une liste étendue de mots piégeux en français, avec leurs genres et des explications…

3 heures ago

Guide : Reconnaître le Féminin ou le Masculin en Français

Apprendre à distinguer le genre des noms en français peut être un véritable défi pour…

4 heures ago

Fiche Auteur : Montesquieu

1. Informations Générales Nom complet : Charles-Louis de Secondat, Baron de La Brède et de…

4 heures ago

Fiche de Lecture et Citations Clés – L’Art de la Guerre de Nicolas Machiavel

Introduction L’Art de la Guerre (Dell’arte della guerra), publié en 1521, est l’un des ouvrages…

4 heures ago

This website uses cookies.