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 :

afficher une image située dans la bdd [Fait]


Sujet :

PHP & Base de données

  1. #1
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    483
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Avril 2007
    Messages : 483
    Points : 234
    Points
    234
    Par défaut afficher une image située dans la bdd
    Bonsoir,

    Voila je stocke des images dans ma base de données dans un champ blob mais je ne trouve pas comment l'afficher par la suite avec php.

    Quelqu'un as-t-il une suggestion svp ?

    Egalement, quelle est la taille maximum d'une image que le champ de type blob peut supporter ?

    Merci d'avance

  2. #2
    Inactif
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 179
    Points : 202
    Points
    202
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    # image.php
    <?php
    header('Content-Type: image/jpg')  // À changer selon l'extension
    // ... Récupération du blob ... 
    echo $blob;
    ?>
     
    # truc.html
    <img src="image.php" />
    En général ceci dit, je suis pas convaincu qu'un stockage en base des images soit des plus judicieux. Stocker le chemin sur le serveur est une option souvent favorisée (même si ma préférée reste de ne rien stocker du tout en base et d'utiliser une convention de nommage sur les images, combinée à un petit peu d'url rewriting).

  3. #3
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    483
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Avril 2007
    Messages : 483
    Points : 234
    Points
    234
    Par défaut
    Merci pour la technique.

    Par contre après test c'est vrai que c'est franchement pas la mieux (c'est pas moi qui ai créé la BDD sinon j'aurai pas fait comme ça de toute façon lol).

    Je pense que je vais poser la question à mon chef de projet pour opter pour une autre solution de stockage d'image.

    Pour le cas ou il dit qu'on garde cette façon de faire (j'espère pas :p ) comment je peux modifier le choix de l'image ?
    J'avais pensé à utiliser une session mais n'y a-t-il pas d'autre moyen pour dire au script php d'utiliser telle ou telle image ?

    Mon script a donné ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?php
    	header('Content-Type:image/jpg');
    	mysql_connect("serveur", "login", "mdp");
    	mysql_select_db("projetgroupe");
    	$reponse = mysql_query('SELECT photo_produit FROM photo_produit_fournisseur WHERE ref_produit=1') or die (mysql_error());
    	mysql_close();
    	$image = mysql_fetch_array($reponse);
    	echo $image['photo_produit'];
    ?>
    Il affiche donc l'image du produit 1. Mais si je suis sur la page du produit 2, comment puis-je dire au script (autrement qu'avec une session) de récupérer l'image du produit 2 ?

    Si aucun autre moyen que la session tant pis.

    Et également : y a-t-il moyen de rendre l'en-tête dynamique ? Je veux dire qui permettrait d'afficher aussi bien des jpg que des bmp ou des gif ou je ne sais quoi come format d'image (et non que des jpg avec l'en-tête actu par exemple).

    Merci d'avance

  4. #4
    Inactif
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 179
    Points : 202
    Points
    202
    Par défaut
    Bah tu passes des paramètres à ton script que tu récupères par GET...

    image.php?id=<?php echo $id ?>&type=<?php echo $type ?>

  5. #5
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    483
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Avril 2007
    Messages : 483
    Points : 234
    Points
    234
    Par défaut
    ba bete lol j'avais pas pensé à cette technique (que j'utilise 3 lignes en dessous pour autre chose !)

    par contre pour récupérer le type de l'image stockée dans la BDD tu fais comment ? Car ce n'est pas le nom du coup qui est stocké mais l'image elle-même (ça aurait été le nom on aurait pu juste récupérer les 3 dernières lettres de l'enregistrement mais la...)

  6. #6
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 56
    Points : 57
    Points
    57
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $extensions = array('.png', '.gif', '.jpg', '.jpeg');
     
    $extension = strtolower(strrchr($image['photo_produit'], '.'));
     
    switch($extension)
    {
        case $extensions[0]:
        // header ...
        break;
     
        //...
    }
    Edit pardon je viens de voir la notation en bas comme quoi c'etait toute l'image qui était stockée
    Mais avec ce code tu peux stocker le format de l'image dans ta bdd !

    Sinon tu peux regarder a quoi ça ressemble, Mes png commencent par : ‰PNG et dans mes jpg il y a JFIF dans les premiers caractères ...

  7. #7
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 610
    Points : 66
    Points
    66

  8. #8
    Membre émérite
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Points : 2 969
    Points
    2 969
    Par défaut
    Salut, un petit tour des les cours et hop : http://beaussier.developpez.com/arti...hp/mysql/blob/

    Bon développement
    Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement. Albert EINSTEIN

    F.A.Q. : Java, PHP, (X)HTML / CSS

    N'oubliez pas de cliquer sur le bouton Résolu en bas de page quand vous avez obtenu une solution à votre problème

Discussions similaires

  1. afficher un image située dans une dll
    Par idaram dans le forum Débuter
    Réponses: 2
    Dernier message: 07/02/2014, 14h50
  2. [MySQL] Afficher une image stockée dans BLOB de la BDD
    Par gilou31 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 04/03/2008, 17h25
  3. Réponses: 6
    Dernier message: 22/12/2004, 11h00
  4. Afficher une image stockée dans interbase
    Par NicolasR dans le forum Bases de données
    Réponses: 2
    Dernier message: 01/06/2004, 10h00
  5. [VB.NET] afficher une image stockée dans une table
    Par matonfire dans le forum ASP.NET
    Réponses: 4
    Dernier message: 19/03/2004, 11h21

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