Problème pdo php

guysharony Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -  
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   -
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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