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 :

[PostGreSQL] Ouverture d'une image stockée dans la base


Sujet :

PHP & Base de données

  1. #1
    Membre du Club Avatar de passie
    Inscrit en
    Février 2005
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 56
    Points : 55
    Points
    55
    Par défaut [PostGreSQL] Ouverture d'une image stockée dans la base
    Bonjour à tous,
    Débutant avec PHP
    Voila maintenant un moment que je cherche à ouvrir une image stockée dans une table POSTGRE sous mandriva.
    Je pense avoir correctement inséré l'image mais je n'arrive pas à l'ouvrir sur une page HTML.
    Je récupére bien la valeur de l'OID mais c'est tout.
    Je récupere juste une longue série de symboles qui doivent être mon image (c'est déja un début mais je ne progresse plus)
    Si quelqu'un peut m'éclairer merci d'avance.
    Ci joint le code avec je l'espére pas trop d'erreurs.
    Message posté également sur le forum postgre mais aprés coup je me dit que c'est plutot une question PHP.

    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
    29
    30
    31
    32
    <?php
    include "connect.inc.php"; //connexion à la base
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html lang="fr-fr">
    <head>
      <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
      <title>index.html</title>
    </head>
    <body>
    <div align="center"><strong>TEST PHOTO</strong></div>
    <hr>
    	<?PHP
    		$id = $_POST&#91;'id'&#93;;
    		echo "$id<br/>";
    		$requete = "SELECT nom,prenom,photo FROM t_trombinoscope WHERE id = '$id'";
    		$query = pg_query&#40;$db,$requete&#41;;
    		$nom = pg_fetch_result&#40;$query, 0, 0&#41;;
    		$prenom = pg_fetch_result&#40;$query, 0, 1&#41;;
    		$photo =  pg_fetch_result&#40;$query, 0, 2&#41;;
    		echo "Nom &#58; $nom<br/>";
    		echo "Prenom &#58; $prenom<br/>";
    		echo "Num photo &#58; $photo<br/>";
    		//echo $photo;
       	pg_query&#40;$db, "begin"&#41;;
       	$handle = pg_lo_open&#40;$db, $photo, "r"&#41;;
       	$data = pg_lo_read_all&#40;$handle&#41;;
       	pg_query&#40;$db, "commit"&#41;;
    	echo $dphoto;
    	?>
    </body>
    </html>

  2. #2
    Membre chevronné
    Avatar de Bidouille
    Inscrit en
    Mars 2003
    Messages
    1 273
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 1 273
    Points : 1 990
    Points
    1 990
    Par défaut
    Tu ne peux pas faire cela. Il faut utiliser header pour envoyer le type d'image.


    Regarde ce tuto, c'est pour MySql mais le principe est le même.
    Rédacteur PHP / Delphi ADO / Novell / OpenOffice.org

    Inutile de m'envoyer vos questions par MP, je ne réponds que par le forum.

  3. #3
    Membre du Club Avatar de passie
    Inscrit en
    Février 2005
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 56
    Points : 55
    Points
    55
    Par défaut
    Bonjour BiD0uille
    J'avais déja lu ton tuto pour MySQL.
    Pour Postgre il est dit qu'il faut utiliser une transaction
    pg_lo_read_all() lit un objet de grande taille en totalité et le passe directement au client, après les en-têtes adéquates. Cette fonction est prévue pour transmettre des sons ou des images.
    Pour utiliser un objet de grande taille (lo), il est nécessaire de le faire dans une transaction.
    Il faut utiliser header pour envoyer le type d'image.
    Ou doit je mettre header ?? : est ce les fameuses en-têtes adéquates : :
    J'ai essayé ceci mais en vain.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
       	pg_query&#40;$db, "begin"&#41;;
       	$handle = pg_lo_open&#40;$db, $photo, "r"&#41;;
    	header&#40;"Content-type&#58;".jpeg&#41;;
       	$data = pg_lo_read_all&#40;$handle&#41;;
       	pg_query&#40;$db, "commit"&#41;;
    : :

  4. #4
    Membre du Club Avatar de passie
    Inscrit en
    Février 2005
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 56
    Points : 55
    Points
    55
    Par défaut
    Bonjour,
    Mon probléme évolue, j'arrive maintenant à afficher le contenu binaire de mon image mais toujours pas l'image elle même.

    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
    	<?PHP
    		$id = $_POST&#91;'id_ut'&#93;;
    		echo "Bonjour <br/>";
    		$requete = "SELECT nom,prenom,photo FROM t_utilisateurs WHERE id_ut = '$id'";
    		$query = pg_query&#40;$db,$requete&#41;;
    		$nom = pg_fetch_result&#40;$query, 0, 0&#41;;
    		$prenom = pg_fetch_result&#40;$query, 0, 1&#41;;
    		$photo = pg_fetch_result&#40;$query, 0, 2&#41;;
    		echo "Nom &#58; $nom<br/>";
    		echo "Prenom &#58; $prenom<br/>";
    		$affich = stripcslashes&#40;$photo&#41;;
    		header&#40;"Content-type&#58;".jpeg&#41;;
    		echo $affich;
    //OU ALORS
    echo "<br/><br/>ou alors <br/><br/>";
    	$requete1 = "SELECT photo FROM t_utilisateurs WHERE id_ut = '$id'";
    	$query1 = pg_query&#40;$db,$requete1&#41;;
    	$photo1 =  pg_fetch_object&#40;$query1, 0&#41;;
    	header&#40;"Content-type&#58;".jpeg&#41;;
    	//on affiche l'image
    	print stripcslashes&#40;$photo1->photo&#41;
    	?>
    Pour l'affichage j'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <IMG src="<?php $affich ?>" width="207" height="301" align="middle" border="0">
    <IMG src="<?php $photo ?>" width="207" height="301" align="middle" border="0">
    <IMG src="<?php "print stripcslashes&#40;$photo1->photo&#41;;" ?>" width="207" height="301" align="middle" border="0">
    Mais sans succés, le code php ne renvoi que le contenu binaire des images et les IMG src = ne me donne que des cadres vides.
    Le probléme semble se trouver à l'affichage mais OU : : :
    Merci d'avance

Discussions similaires

  1. Lien vers une image stockée dans la base
    Par teen6517 dans le forum Apex
    Réponses: 0
    Dernier message: 03/12/2013, 11h49
  2. Afficher une image stockée dans la Base de données
    Par SaladinDev dans le forum Ext JS / Sencha
    Réponses: 3
    Dernier message: 08/02/2012, 19h15
  3. [PostgreSQL] Afficher une image stockée dans la base avec PHP / PDO / PostgresSQL
    Par genamiga dans le forum PHP & Base de données
    Réponses: 18
    Dernier message: 16/02/2011, 14h02
  4. Aficher une image stockée dans la base
    Par homonxa dans le forum JSF
    Réponses: 1
    Dernier message: 01/03/2010, 17h51
  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, 11h00

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