Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/06/2011, 11h50   #1
Candidat au titre de Membre du Club
 
Inscription : mars 2008
Messages : 15
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 15
Points : 10
Points : 10
Par défaut Afficher image d'une BDD avec PHP PDO

Bonjour,

je souhaiterai afficher une image que je stocke dans une base de données MySQL avec PHP PDO, voici mon code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
    $serveur = "localhost";
    $base = "bddtest";
    $login = "test";
    $password = "test";
    $connectstring_temp = 'mysql:host='.$serveur.';dbname='.$base;
    $dbh_temp = new PDO($connectstring_temp, $login, $password);
    $sql = "SELECT doc FROM test WHERE id=1";
    $query = $dbh_temp->prepare($sql);
    $query->execute();
    $query->bindColumn("doc", $image, PDO::PARAM_LOB);
    $query->fetch(PDO::FETCH_BOUND);
    header("Content-Type: image" );
    echo ($image);

Le problème, c'est que cela n'affiche as l'image mais son code binaire, dont voici un extrait :
Code :
1
2
 
    ���}!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
Leo62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2011, 12h51   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
Il faudrait peut être définir le type d'image en question dans le content-type.
Code :
header('Content-Type: image/jpg');
Sinon, on peut passer par cette méthode
- http://www.phpeveryday.com/articles/...LOBs-P554.html
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2011, 12h58   #3
Candidat au titre de Membre du Club
 
Inscription : mars 2008
Messages : 15
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 15
Points : 10
Points : 10
Salut, et merci,

quand je précise le type d'images, 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.

Je vais essayer ton autre méthode et je te tiens au courant
Leo62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2011, 13h41   #4
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
Tu as tout un tas de $#xxx; dans ton code binaire. Ce sont des caractères HTML, ce n'est pas normal. Appliques-tu une règle de transformation en entrée ou en sortie de ton champ blob ?
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2011, 13h58   #5
Candidat au titre de Membre du Club
 
Inscription : mars 2008
Messages : 15
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 15
Points : 10
Points : 10
Non je n'applique aucune transformation a mon blob (qui est d'ailleurs un LONGBLOB dans ma BDD.

En mettant juste le code PHP comme mis plus haut, j'ai toujours la même erreur...

Mais je vais essayer l'autre méthode, car comme à terme il faudra que j'intègre mon code PHP dans un page html (qui contient l'entete, les menus...), la méthode actuelle n'est peut-être pas très appropriée ?
Leo62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2011, 14h07   #6
Candidat au titre de Membre du Club
 
Inscription : mars 2008
Messages : 15
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 15
Points : 10
Points : 10
Voila, ça fonctionne merci bien.

Je donne le code au cas où cela puisse aider quelqu'un.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// 	configuration
	$dbtype		= "mysql";
	$dbhost 	= "localhost";
	$dbname		= "bddtest";
	$dbuser		= "test";
	$dbpass		= "test";
 
	// 	database connection
	$conn = new PDO("mysql:host=$dbhost;     dbname=$dbname",$dbuser,$dbpass);
 
	// query
	$sql = "SELECT id, fichier FROM test WHERE id = 1";
	$q = $conn->prepare($sql);
	$q->execute();
 
	$q->bindColumn(1, $id);
	$q->bindColumn(2, $cover, PDO::PARAM_LOB);
 
	while($q->fetch())
	{
		file_put_contents($id.".jpg",$cover);
		echo "<img src='".$id.".jpg'> <br/>";
	}
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.
Leo62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h04.


 
 
 
 
Partenaires

Hébergement Web