Problème pdo php

guysharony Messages postés 158 Statut Membre -  
jordane45 Messages postés 40050 Statut Modérateur -
Bonjour a tous,
J'ai un grand problème en php l'image ne s'affiche pas quand le head change je ne sais pas pourquoi, merci d'avance pour votre aide


<?php
include('connect.php');
$par=$_GET['id'];
$query = $dbh->query("SELECT * FROM project WHERE id=$par");

while($article2 = $query->fetch())
{

$filename = basename($file);
$file_extension = strtolower(substr(strrchr($filename,"."),1));

switch( $file_extension ) {

case "gif": $ctype="image/gif"; break;
case "png": $ctype="image/png"; break;
case "jpeg": $ctype="image/jpeg"; break;
case "jpg": $ctype="image/jpg"; break;
default:

}

$imagedata = $article2['image'];
echo $imagedata;
header('Content-type: ' . $ctype);

}

?>
A voir également:

2 réponses

pols12 Messages postés 1143 Date d'inscription   Statut Membre Dernière intervention   119
 
Bonjour !

Peux-tu expliquer le but de ton code ?

Tu as une boucle while, donc elle va se répéter autant de fois qu'il y a d'enregistrements.
Et dedans, tu affiches le champ image de ta table puis tu définies le header comme une image.

Enfin, on renvoie le tout au navigateur. Les headers s'écrasent, c'est donc le dernier header qui est renvoyé, et les echo s'accumulent. Donc tu as une suite d'image.

Il y a plusieurs trucs qui me questionnent :
  • header() n'est pas censé être appelé après echo (et ton fichier connect.php ne doit pas contenir de session_start() ou autre header HTTP)
  • tu stockes vraiment les images en tant que telles dans ta BDD ? tu ne stockes pas uniquement les URL ?
  • tu ne peux renvoyer qu'une image à la fois, il faut donc que tu arrêtes ta boucle à l'image voulue...


0
jordane45 Messages postés 40050 Statut Modérateur 4 757
 
Bonjour,


Si tu as stocké tes images dans ta BDD (en BLOB je suppose...) il faut que tu utilises ce type de syntaxe
echo "<img  src='data:image/jpeg;base64,".base64_encode($tomimgage)."'></img>":



NB: Au passage ... pense à récupérer "PROPREMENT" tes variables AVANT de les utiliser...
ceci :
$par=$_GET['id'];

Devient :
$par = !empty($_GET['id'] ? $_GET['id'] : NULL;




EDIT : Je viens de voir que tu n'utilisais pas l'image issue d'une BDD .. mais d'un fichier visiblement ($filename...)

Dans ce cas... il suffit de faire :
echo "<img  src='$filename'></img>":



EDIT2 : Non en fait ... tu utilises un fichier .... mais aussi un champ de ta BDD... n'aurais tu pas tout mélangé ?????
 $filename = basename($file);
....
$imagedata = $article2['image'];     



Cordialement, 
Jordane                                                                 
0