Problème pdo php

Fermé
guysharony Messages postés 1 Date d'inscription dimanche 27 septembre 2015 Statut Membre Dernière intervention 21 mai 2016 - 21 mai 2016 à 19:21
jordane45 Messages postés 38366 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 janvier 2025 - 22 mai 2016 à 00:00
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 lundi 22 mars 2010 Statut Membre Dernière intervention 31 juillet 2019 119
21 mai 2016 à 22:27
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 38366 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 janvier 2025 4 720
Modifié par jordane45 le 22/05/2016 à 00:01
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