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 stockée dans MySQL [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 149
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 149
    Par défaut Afficher une image stockée dans MySQL
    Bonjour
    J'aimerai donc afficher une image qui est stocké dans MySQL. Pour cela j'ai créé un champ de type "mediumblob", puis depuis MySQL, j'ai cherché l'image et importé.

    En suite dans ma page j'ai
    echo '<b>Photo</b>: '.$list['fd_picture'].'<br>';
    Il m'affiche plein de caractere au lieu de l'image.

    En suite, j'ai trouvé ceci:
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    <?
    mysql_connect("localhost","","");
    mysql_select_db("le_nom_de_votre_base");
    $img = "image.jpg";
    $fp = fopen($img,"r");
    $data = fread($fp,filesize($img));
    fclose($fp);
    $data = addslashes($data);
    mysql_query("INSERT INTO test (data_img) VALUES ('$data')");
    // pour la lecture des données
    <?php
     
    $connexion=mysql_connect("localhost","","");
    mysql_select_db("db",$connexion);
    $requete="select data_img from test where num_img=1";
    $resultat=mysql_query($requete,$connexion);
    $tableau=mysql_fetch_array($resultat);
    mysql_close($connexion);
     
    $image=$tableau[0];
     
    $fichier=fopen("image/img_tmp.jpg","w");
    fwrite($fichier,$image);
    fclose($fichier);
    ?>
     
    <img src="image/img_tmp.jpg">
    Alors je pourrais reprendre ce code

    mais j'aimerais savoir avant s'il est possible de faire la même chose sans que l'image soit créé et ajouter sur mon serveur web

    donc sans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="image/img_tmp.jpg">
    Y a t'il une autre moyen d'afficher une image sur une page dont sa source est MySQL?

    Merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 30
    Par défaut
    Tu dois passer par une page intermédiaire qui servira a renvoyé le contenu de l'image

    Tu crée un fichier image.php par exemple

    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
    20
     
    header('Content-type: image/jpeg'); // Ca peut être image/png , image/gif etc! Ca permettra d'indiquer au navigateur que je renvoie une image
     
    if(!isset($_GET['id']) || !is_int($_GET['id'])) // Si l'argument id n'existe pas , ou n'est pas un nombre, on arrete le script
      exit;
    else
      $id = $_GET['id'];
     
    /** 
    Tu te connecte à la base
     **/
     
    $requete="select data_img from test where num_img=$id";
     
    /**
    tu récupère dans $img le contenu de l'image
    **/
     
    echo $img;
    exit;

    Et tu na plus qu'a faire dans la page principal

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <img src="image.php?id=10"/>
    J'espere que je me suis bien fait comprendre

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 149
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 149
    Par défaut
    ha oui pas mal! Merci

    Maintenant j'ai une petit question de la facon de faire.

    Que me recommanderais tu de faire. Comme la maniere que tu viens de décrire ou bien il y aurait la solution suivante:

    Dans mon champs cp_picture, je mes du text qui sera en fait le nom de l'image:par exemple mon_image.jpg,

    Puis dans mon code php je mets:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo 'img/'.$list['cp_picture']; //img etant le dossier contenant toutes mes image dont l'image mon_image.jpg
    Qu'en pense tu? que pourrais ton me recommander?

    Personnelement je pense que cette derniere methode pendra de la place sur le serveur web puisque toutes les images y seront stockées. Mais bon...

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 149
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 149
    Par défaut
    Bon ben c'est cool, j'ai utiliser la méthode de coolmic et ca marche bien.
    mais une petite question Une fois la photo intégrée dans MySQL, comment je fait si je veux l'enlever/supprimer???

    Ma question parait bete mais je n'y arrive pas....

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 30
    Par défaut
    je pense que il suffit de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mysql_query("DELETE FROM nom_de_la_table WHERE num_img=$id");
    Sinon je suis pas vraiment pour stocker des images dans la base de données, si c'est pour quelques dizaine de photos, ca va, mais si tu risque d'en placer un bon nombre, je te conseille vraiment pas de les mettre dans la base de données! Ne serait-ce que pour les backups!

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 149
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 149
    Par défaut
    oui, mais en fait j'ai essayé de le faire depuis la console phpMyAdmin sans faire du code.

    Dit moi aussi aurait tu une idée comment je peux controler la taille de l'image?
    J'aimerai faire une conditon par exemple.

    Si image stovké > que 2o
    alors fait
    si non
    fait autre chose

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 30
    Par défaut
    euh essaye:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if (strlen($img) < 1024) // 1024octet = 1ko
    {
     
    }
    else
    {
     
    }
    Mais je te conseille de stocker dans ta table d'image, la taille de chaque image stocké!

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 149
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 149
    Par défaut
    Super, ca marche bien,
    mewrci

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

Discussions similaires

  1. [MySQL] Afficher une image stockée dans MySql
    Par yanng dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 12/11/2007, 20h56
  2. [MySQL] Afficher une image stockée dans un champs blob
    Par encoupe dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 08/11/2006, 12h00
  3. Afficher une Image stockée dans un champs BLOB oracle
    Par nonaparus dans le forum Access
    Réponses: 1
    Dernier message: 18/10/2006, 08h26
  4. [MySQL] Afficher une image stockée dans une base de données
    Par LuckySoft dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 22/04/2006, 12h57
  5. 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

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