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.
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
);
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>
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.";
}
}
?>
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 :
<!-- 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 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>";
}
// 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>";
}
// 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 :
// 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>";
}
// 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>";
}
// 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>";
}
// 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>";
}
// 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.
Le commentaire composé est un exercice littéraire qui consiste à analyser un texte en respectant…
Les adjectifs liés en français sont les adjectifs qui s’accordent en genre (masculin/féminin) et en…
Voici une liste étendue de mots piégeux en français, avec leurs genres et des explications…
Apprendre à distinguer le genre des noms en français peut être un véritable défi pour…
1. Informations Générales Nom complet : Charles-Louis de Secondat, Baron de La Brède et de…
Introduction L’Art de la Guerre (Dell’arte della guerra), publié en 1521, est l’un des ouvrages…
This website uses cookies.