Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1916 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [Résolu] Afficher image d'une BDD avec PHP PDO

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu] Afficher image d'une BDD avec PHP PDO

n°2085078
leo62
Zen soyons Zen...
Posté le 27-06-2011 à 10:53:20  profilanswer
 

Bonjour,
 
je souhaiterai afficher une image que je stocke dans une base de données MySQL avec PHP PDO, voici mon code :
 

Code :
  1. $serveur = "localhost";
  2. $base = "bddtest";
  3. $login = "test";
  4. $password = "test";
  5. $connectstring_temp = 'mysql:host='.$serveur.';dbname='.$base;
  6. $dbh_temp = new PDO($connectstring_temp, $login, $password);
  7. $sql = "SELECT doc FROM test WHERE id=1";
  8. $query = $dbh_temp->prepare($sql);
  9. $query->execute();
  10. $query->bindColumn("doc", $image, PDO::PARAM_LOB);
  11. $query->fetch(PDO::FETCH_BOUND);
  12. header("Content-Type: image" );
  13. echo ($image);


 
Le problème, c'est que cela n'affiche as l'image mais son code binaire, dont voici un extrait :

Code :
  1. ���}!1AQa"q2���#B��R��$3br� %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz��������������������������������������������������������������������������� ���w!1AQaq"2�B���� #3R�br� $4�%�


 
A noter que je ne souhaite pas stocker les images dans un répertoire et le chemin dans ma BDD car il s'agit d'un site web qui sera administré à distance par un client lourd (et je n'ai qu'une image à stocker).
 
Avez-vous une idée du problème ?
 
Par avance merci.
Léo


Message édité par leo62 le 27-06-2011 à 14:11:20
mood
Publicité
Posté le 27-06-2011 à 10:53:20  profilanswer
 

n°2085120
olivthill
Posté le 27-06-2011 à 12:13:03  profilanswer
 

Les octets de l'image semblent être bien récupéré, et donc, ce ne semble pas être un problème dû au Select et à PDO, mais ce serait plutôt un problème de traitement de ces octets.
 
Le header n'a pas l'air correct, car il manque le type de l'image.
 
Dans la page de PHP à propos de la fonction header(), http://fr.php.net/manual/fr/function.header.php ,
il y a un exemple d'affichage d'image :

<?php
ob_start();
// assuming you have image data in $imagedata
$length = strlen($imagedata);
header('Last-Modified: '.date('r'));
header('Accept-Ranges: bytes');
header('Content-Length: '.$length);
header('Content-Type: image/jpeg');
print($imagedata);
ob_end_flush();
?>

n°2085139
leo62
Zen soyons Zen...
Posté le 27-06-2011 à 12:55:43  profilanswer
 

Salut, et merci :)
 
Dès que je précise :
header("Content-Type: image/jpeg" );
 
J'ai le message :
L'image “http://127.0.0.1:8888/Workspace/test.php” ne peut être affichée car elle contient des erreurs.
 
Et ce même en rajoutant toutes les autres lignes du code que tu m'as donné :s

n°2085180
leo62
Zen soyons Zen...
Posté le 27-06-2011 à 14:10:44  profilanswer
 

Bon, au final je suis passé par une autre méthode qui fonctionne, je met le code au cas où ça puisse aider quelqu'un un jour :
 

Code :
  1. <?php
  2. //  configuration
  3. $dbtype  = "mysql";
  4. $dbhost  = "localhost";
  5. $dbname  = "bddtest";
  6. $dbuser  = "test";
  7. $dbpass  = "test";
  8. //  database connection
  9. $conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);
  10. // query
  11. $sql = "SELECT id, fichier FROM test WHERE id = 1";
  12. $q = $conn->prepare($sql);
  13. $q->execute();
  14. $q->bindColumn(1, $id);
  15. $q->bindColumn(2, $cover, PDO::PARAM_LOB);
  16. while($q->fetch())
  17. {
  18.  file_put_contents($id.".jpg",$cover);
  19.  echo "<img src='".$id.".jpg'> <br/>";
  20. }
  21. ?>


 
Mes données sont dans une table TEST(id, fichier) où id est un entier et fichier un longblob qui contient l'image
 
Encore merci et @bientôt.


Message édité par leo62 le 27-06-2011 à 14:11:02

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [Résolu] Afficher image d'une BDD avec PHP PDO

 

Sujets relatifs
Afficher 2 variables en format heure dans la même cellule??PHP gestion Classement
inpossible d'afficher le panneau outils dans propriétéGénérer aléatoirement du texte sur une image
problème pour travailler sur des fichiers textes en PHPPHP débutant, envoi de mails dynamiquement
Formulaire PHP fonctionne avec FF pas avec IE[PHP/MYSQL] Insérer/modifier des données
[resolu] Envoi des données par PHP après vérification AjaxAfficher résultats base mysql -> tableau html horizontal
Plus de sujets relatifs à : [Résolu] Afficher image d'une BDD avec PHP PDO


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR