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 :

Insérer une image en PHP [Fait] [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut Insérer une image en PHP
    Salut,

    Je suis souvent dans le forum JAVA, voici mon premier post en PHP...

    Voici mon problème:
    J'ai des images en binaire dans la base de données (type BLOB BINARY), je voudrais faire une page PHP de manière à ce que quand on va sur le site http://machin.com/mapage.php?photo=15 par exemple ça affiche la photo 15, comme si c'était un .jpg stocké sur l'hébergeur...

    Si je fais un echo $t[0]->photo (le champ photo du tuple) ça fait parse error... Ca n'est donc pas echo qu'il faut utiliser...

    Merci d'avance de votre aide

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    495
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 495
    Points : 396
    Points
    396
    Par défaut
    Salut,

    Moi j'utilise ce code, et ca marche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $link = Connection();
    $requete = "SELECT binaire,type, description FROM descriptions_images WHERE id_pkg='".$id_pkg."' AND nom='".$nom."'";
    $result = @mysql_query($requete);
    $row = mysql_fetch_assoc($result);
    $binaire = $row['binaire'];
    $type = $row['type'];
    $alt = $row['description'];
     
    header( "content-type: ".$type);
    echo $binaire;

    Edit : et mon champ binaire est bien un BLOB BINARY

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2006
    Messages : 9
    Points : 13
    Points
    13
    Par défaut
    Ce tutoriel explique comment stocker et récupérer des images stockées dans une base Mysql.

    @+

    Stéphane

  4. #4
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    Une parse error est une erreur de syntaxe, cela n'a absolument rien à voir avec la méthode de programmation utilisée (algo) ni même avec la fonction echo (ni aucune autre).

    Utilise un bon éditeur de code, il t'aidera assurément. Il y a un sondage en post-it à ce sujet.

  5. #5
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par Yogui
    Salut

    Une parse error est une erreur de syntaxe, cela n'a absolument rien à voir avec la méthode de programmation utilisée (algo) ni même avec la fonction echo (ni aucune autre).

    Utilise un bon éditeur de code, il t'aidera assurément. Il y a un sondage en post-it à ce sujet.
    Ah ouais effectivement, en fait j'ai fait echo sans conviction, j'ai vu qu'il y avait une erreur, j'ai pas cherché plus loin (moi et le php o_O).

    Merci ze_vince et Stephane_be, je vais regarder ça

  6. #6
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Bon, en fait le problème était que dans ma requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT photo FROM photo WHERE...
    il manquait des apostrophes à l'envers:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT photo FROM `photo` WHERE...
    (peut-être parce que la table a le même nom qu'un champ, mais bon, ça marchait en java sans les apostrophes)

    Mais maintenant, j'ai un autre problème... Ca n'affiche pas l'image, mais les codes ascii correspondants à chaque octet, sous forme de chaîne de caractères (incompréhensible bien sûr)...
    EDIT: c'est bon, il suffit d'appeler ce lien dans une balise <img> et ça marche...

  7. #7
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    C'est gênant, quand je tape l'url http://machin.../mapage.php?photo=15, je n'ai (comme j'ai dit plus haut) que les octets affichés sous forme de chaîne de caractères. Dans une page où on fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="http://....photo=15">
    ça marche, mais si on clique droit, afficher l'image, on retombe sur le même problème... Y'a-r-il un moyen d'empêcher ça?

    EDIT: j'ai trouvé dans le tuto:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header ("Content-type: jpeg");

  8. #8
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Essaie avec les headers officiels :
    Content-Type: image/jpeg

    http://es2.php.net/manual/fr/function.header.php

  9. #9
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par Yogui
    Essaie avec les headers officiels :
    Content-Type: image/jpeg

    http://es2.php.net/manual/fr/function.header.php
    OK merci, j'ai rajouté image/


    Par contre, une autre petite question...
    L'image, même si elle est dans le cache, semble être retéléchargée (elle se rafraichit progressivement lorsqu'on revient sur une page où on est déjà passé). C'est normal?

  10. #10
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Tu peux envoyer plusieurs headers à l'aide de la fonction éponyme. N'hésite pas à rendre visite à la doc officielle afin de voir lesquels sont disponibles, je suis persuadé que tu en trouveras un pour donner une durée de vie à ton cache.

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

Discussions similaires

  1. [HTML 5] [HTML & PHP] Lien "insérer une image"
    Par Portailservices dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 15/08/2013, 11h43
  2. insérer une image dans PHP, c'est possible ?
    Par misshelen dans le forum Langage
    Réponses: 3
    Dernier message: 12/01/2009, 14h40
  3. [Ming] insérer une image dans flash grace à PHP
    Par jexl dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 17/01/2006, 12h00
  4. [Crystal Reports 9] comment insérer une image dans Détails
    Par VVE dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 22/10/2003, 17h06
  5. [CR7] Insérer une image dynamiquement
    Par yoloosis dans le forum SAP Crystal Reports
    Réponses: 12
    Dernier message: 28/07/2003, 09h54

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