IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

affichage image BLOB


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 65
    Points : 51
    Points
    51
    Par défaut affichage image BLOB
    Bonjour,
    Je souhaite créer un site vitrine, avec une page ou je pourrais afficher tout mes produits, et donc avec les images qui vont avec.
    ma table image:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    CREATE TABLE `images` (
    `img_id` INT NOT NULL AUTO_INCREMENT ,
    `img_nom` VARCHAR( 50 ) NOT NULL ,
    `img_taille` VARCHAR( 25 ) NOT NULL ,
    `img_type` VARCHAR( 25 ) NOT NULL ,
    `img_desc` VARCHAR( 100 ) NOT NULL ,
    `img_blob` BLOB NOT NULL ,
    PRIMARY KEY ( `img_id` )
    )
    J'arrive a afficher mes images grace à un lien mais elle s'affiche sur une autre page, je souhaiterais donc les afficher sur la meme page, voici le code de la page :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    // connection
    $req = $bdd->query("select * from produits, images where produits.id_prod = images.img_id");
    while ($donne = $req->fetch()) {
        $id = $donne['id_image'];
        $sql = "SELECT img_id, img_type, img_blob " .
                "FROM images WHERE img_id = " . $id;
        $res = mysql_query($sql) or die(mysql_error());
        $image = mysql_fetch_assoc($res);
        $rows = mysql_num_rows($res);
        header('Content-type: ' . $image['img_type']);
     
        if ($rows > 0) {
            echo $image['img_blob'] . '<br>';
        } else {
            print 'Aucune image à afficher';
            exit();
        }
    }

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    site vitrine ou pas, on n'enregistre pas ses images dans des champs BLOB.

    1/ on enregistre l'image elle-même dans un dossier "dossier-images"
    2/ on enregistre LE NOM/URL de l'image en base de données.
    3/ on l'affiche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="./dossier-images/<?php echo $row['nom-image']; ?>" alt="">

  3. #3
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Dans ton flux HTML, tes images sont bien de cette forme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="img.php?id=123" />
    (c'est un exemple...).

    Ah au fait, il vaut mieux pour toi de renvoyer un 404 quand l'entrée en base n'existe pas, quelque chose comme ça ferait l'affaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
     
    $stmt = $bdd->prepare('SELECT i.img_id,i.img_type,i.img_blob FROM images AS i WHERE i.img_id=:id');
     
    if (!$stmt->execute(array('id' => $_GET['id'])) || !$row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        header("{$_SERVER['SERVER_PROTOCOL']} 404 Not Found");
        exit;
    }
     
    header("Content-type: {$row['img_type']}");
    echo $row['img_blob'];
    Au passage, je te recommande fortement d'utiliser le cache du navigateur pour ne pas charger inutilement à la fois la bande passante et les accès bases. Je te recommande ce thread pour comprendre comment ça fonctionne.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/12/2014, 13h15
  2. Affichage image blob avec DOMPDF
    Par Lanfear dans le forum Langage
    Réponses: 1
    Dernier message: 22/10/2013, 14h14
  3. Affichage d'une image (BLOB) dans un JPanel
    Par Vips dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 24/03/2008, 15h38
  4. [MySQL] Affichage d'images BLOB
    Par roms19 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 09/01/2008, 11h52
  5. [MySQL] Affichage d'image (blob)
    Par weejungle dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 16/11/2005, 13h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo