Apprendre à programmer

Insérer une image dans une base de données MySQL en utilisant PHP

Insérer des images dans une base de données MySQL à l’aide de PHP est une tâche courante lors du développement d’applications Web. Cet article vous guidera à travers les étapes nécessaires pour accomplir cette tâche.

Étapes à suivre :

1. Création de la table dans la base de données :
CREATE TABLE images (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nom_image VARCHAR(100),
    type_image VARCHAR(100),
    taille_image INT,
    donnees_image LONGBLOB
);
2. Création du formulaire HTML pour téléverser l’image :
<form action="upload.php" method="post" enctype="multipart/form-data">
    <input type="file" name="image" accept="image/*">
    <input type="submit" value="Uploader">
</form>
3. Écriture du script PHP pour traiter le téléversement de l’image :
<?php
// Connexion à la base de données
$servername = "localhost";
$username = "utilisateur";
$password = "motdepasse";
$dbname = "nom_base_de_données";

$conn = new mysqli($servername, $username, $password, $dbname);

// Vérification de la connexion
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// Vérification si le formulaire a été soumis
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $nom_image = $_FILES['image']['name'];
    $type_image = $_FILES['image']['type'];
    $taille_image = $_FILES['image']['size'];
    $donnees_image = file_get_contents($_FILES['image']['tmp_name']);

    // Préparation de la requête SQL
    $sql = "INSERT INTO images (nom_image, type_image, taille_image, donnees_image) VALUES (?, ?, ?, ?)";
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("ssib", $nom_image, $type_image, $taille_image, $donnees_image);

    // Exécution de la requête
    if ($stmt->execute()) {
        echo "L'image a été téléversée avec succès.";
    } else {
        echo "Erreur lors du téléversement de l'image: " . $conn->error;
    }

    // Fermeture de la connexion
    $stmt->close();
    $conn->close();
}
?>
4. Affichage de l’image à partir de la base de données :
<?php
// Connexion à la base de données
$servername = "localhost";
$username = "utilisateur";
$password = "motdepasse";
$dbname = "nom_base_de_données";

$conn = new mysqli($servername, $username, $password, $dbname);

// Vérification de la connexion
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// Récupération de l'image depuis la base de données
$sql = "SELECT * FROM images WHERE id = ?";
$stmt = $conn->prepare($sql);
$id_image = 1; // Remplacez 1 par l'ID de l'image que vous souhaitez afficher
$stmt->bind_param("i", $id_image);
$stmt->execute();
$result = $stmt->get_result();

if ($result->num_rows > 0) {
    $row = $result->fetch_assoc();
    $type_image = $row['type_image'];
    $donnees_image = $row['donnees_image'];
    // Affichage de l'image
    header("Content-type: " . $type_image);
    echo $donnees_image;
} else {
    echo "Image non trouvée.";
}

// Fermeture de la connexion
$stmt->close();
$conn->close();
?>

Voici des exemples de code pour deux cas d’utilisation différents : la création d’une galerie d’images et la gestion des photos de profil utilisateur.

Exemple 1 : Galerie d’images
1. HTML pour le formulaire de téléchargement d’images :
<!DOCTYPE html>
<html>
<head>
    <title>Uploader une image</title>
</head>
<body>
    <form action="upload.php" method="post" enctype="multipart/form-data">
        <input type="file" name="image" accept="image/*">
        <input type="submit" value="Uploader">
    </form>
</body>
</html>
2. Script PHP (upload.php) pour télécharger et insérer l’image dans la base de données :
<?php
$servername = "localhost";
$username = "utilisateur";
$password = "motdepasse";
$dbname = "nom_base_de_données";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $nom_image = $_FILES['image']['name'];
    $type_image = $_FILES['image']['type'];
    $taille_image = $_FILES['image']['size'];
    $donnees_image = file_get_contents($_FILES['image']['tmp_name']);

    $sql = "INSERT INTO images (nom_image, type_image, taille_image, donnees_image) VALUES (?, ?, ?, ?)";
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("ssib", $nom_image, $type_image, $taille_image, $donnees_image);

    if ($stmt->execute()) {
        echo "L'image a été téléversée avec succès.";
    } else {
        echo "Erreur lors du téléversement de l'image: " . $conn->error;
    }

    $stmt->close();
    $conn->close();
}
?>
3. Affichage des images de la base de données :
<?php
$servername = "localhost";
$username = "utilisateur";
$password = "motdepasse";
$dbname = "nom_base_de_données";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT * FROM images";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
        echo '<img src="data:' . $row['type_image'] . ';base64,' . base64_encode($row['donnees_image']) . '" />';
    }
} else {
    echo "Aucune image trouvée.";
}

$conn->close();
?>
Exemple 2 : Gestion des photos de profil utilisateur
1. Formulaire HTML pour télécharger la photo de profil :
<!DOCTYPE html>
<html>
<head>
    <title>Uploader une photo de profil</title>
</head>
<body>
    <form action="upload_profile_pic.php" method="post" enctype="multipart/form-data">
        <input type="file" name="profile_pic" accept="image/*">
        <input type="submit" value="Uploader">
    </form>
</body>
</html>
2. Script PHP (upload_profile_pic.php) pour télécharger et insérer la photo de profil dans la base de données :
<?php
$servername = "localhost";
$username = "utilisateur";
$password = "motdepasse";
$dbname = "nom_base_de_données";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $nom_image = $_FILES['profile_pic']['name'];
    $type_image = $_FILES['profile_pic']['type'];
    $taille_image = $_FILES['profile_pic']['size'];
    $donnees_image = file_get_contents($_FILES['profile_pic']['tmp_name']);

    $sql = "INSERT INTO profiles (user_id, profile_pic_name, profile_pic_type, profile_pic_size, profile_pic_data) VALUES (?, ?, ?, ?, ?)";
    $stmt = $conn->prepare($sql);
    $user_id = 1; // Remplacez 1 par l'ID de l'utilisateur actuel
    $stmt->bind_param("isssi", $user_id, $nom_image, $type_image, $taille_image, $donnees_image);

    if ($stmt->execute()) {
        echo "La photo de profil a été téléversée avec succès.";
    } else {
        echo "Erreur lors du téléversement de la photo de profil: " . $conn->error;
    }

    $stmt->close();
    $conn->close();
}
?>

Ces exemples fournissent une base solide pour gérer le téléchargement et l’affichage d’images dans une base de données MySQL en utilisant PHP dans différents contextes d’application.

Conclusion

En suivant ces étapes, vous serez en mesure d’insérer des images dans une base de données MySQL en utilisant PHP, ainsi que d’afficher ces images à partir de la base de données. Assurez-vous de sécuriser votre code en vérifiant les types MIME et les tailles d’image pour éviter les vulnérabilités.

AZ

Recent Posts

Principe de la HPLC : fonctionnement, schéma, phase inverse et applications en laboratoire

Lorsqu'un laboratoire doit vérifier la teneur d'un médicament, rechercher une impureté ou confirmer l'identité d'une…

46 minutes ago

Validation d’une méthode analytique HPLC : Guide ICH Q2, Excel et Cas Pratique

Téléchargez notre modèle Excel de validation HPLC automatisé conçu pour faciliter l'évaluation de la linéarité,…

4 heures ago

Test CACES 1 3 5 Gratuit : QCM Interactif avec Corrigés et Score

Dans les métiers de la logistique, du transport et de l'industrie, la conduite de chariots…

1 jour ago

Audit fournisseur : ce que révèlent souvent les visites sur le terrain

Dans les tableaux de bord, un fournisseur peut sembler irréprochable. Les commandes arrivent à temps,…

2 jours ago

Tableau de Bord d’Évaluation Fournisseurs Excel : Ce que les chiffres révèlent souvent avant les problèmes

Télécharger un Tableau de Bord d'Évaluation Fournisseurs Excel permet de suivre la performance des partenaires…

2 jours ago

Cartographie des Achats Excel Automatisée : Modèle Gratuit avec Analyse Fournisseurs et Risques

Dans de nombreuses entreprises, les achats représentent entre 40 % et 80 % des dépenses…

3 jours ago

This website uses cookies.