Problème de récupération d'image dans une BDD MySQL

stan876

Expert
Bonjour,

J'aimerai pouvoir récupérer des images que j'ai inséré dans ma base de donnée MySQL.
Je vous explique un peu ou j'en suis :
J'insère directement dans la base de Free, via leur interface PhpMyAdmin, les images. J'ai donc un champs "image" dans ma table "news" de type BLOB.
J'ai crée un fichier, qui s'appelle "recup_image.php", et qui est capable de récupérer les suivants suivant l'id de la news. Voici un peu à quoi ressemble ce fichier :

[cpp]
<?include 'connexion.php';
$img = "img_tmp.jpg";
$fp = fopen($img,"r");

//on recupere l'image dans la base de donnée (champs BLOB) avec un select
//on lance la requete (mysql_query)
$req = mysql_query($sql) ;

$enreg = @mysql_fetch_array($req);
$image=$enreg["photo"];
$fichier=fopen("img_tmp.jpg","w");
fwrite($fichier,$image);
fclose($fichier);
?>
<img src="img_tmp.jpg">
[/cpp]

Ce fichier marche bien, et affiche la photo correspondante à la news.
Seulement, c'est pas vraiment ce que je veux. J'aimerai pouvoir l'appeller en lui passant l'id de la news avec quelques chose du style
<img src="recup_image.php?news_id=<?=$enreg["news_id"]?>">, mais ça ne marche pas bien entendu.

Je ne sais pas si j'ai été bien clair, dans ce cas, j'essaierai de l'être un peu plus,mais si quelqu'un a une idée, je prend :)

Pour récapituler, j'ai un fichier (recup_image.php) qui est capable de récupérer des images suivant la news et j'aimerai faire appel plusieurs fois à ce fichier dans ma page "index" pour afficher les images suivant les news.

Voilà et merci
 

boub popsyteam

Grand Maître
Bonsoir,

AMHA le plus simple est que tu ai un fichier qui renvoie comme flux ton image avec le bon type mime dans le header ...
 

stan876

Expert
Heu entre temps j'ai un peu changé mon fichier "recup_image.php"

Je récupére directement le BLOB et à la fin je fais :
$image=$enreg["photo"];
header("content-type: image/jpeg");
print $image;

Sachant que j'insère que des jpeg, je peux le mettre en dur dans le code. Le problème maintenant c'est que ça merde avec le header.
Cannot modify header information - headers already sent by ..........

So ?
 

boub popsyteam

Grand Maître
Tu dois envoyer des informations avant ton header, c'est totalement interdit pour que ça puisse marcher.

Poste le code complet du début avec les balises qui vont bien pour l'affichage ;)
 

stan876

Expert
Bon comme ça m'a gavé, j'ai viré le champ BLOB et remplacé par un champ VARCHAR contenant le nom de l'image. C'est beaucoup moins pro mais ça marche :)
 

boub popsyteam

Grand Maître
Tricheur :o

Tu aurais du perseverer je suis sur que tu étais proche de la vérité :)
 

zeb

Modérateur
AMHA, ce n'est pas vraiment "pro" de stocker des images dans une base de données. [:spamafote]

Tu as donc bien fait, toujours AMHA.
 

boub popsyteam

Grand Maître
Bin si vu que tu peux meme attribuer un type mime à un champ dans mysql 5 ...
 

zeb

Modérateur
On peut commencer une bataille de clocher :

■ Les tenant pour avoir tout au même endroit dans la base, etc.
vs
■ Les tenant pour avoir dans la base exclusivement des données indexables, triables, SQL-isables quoi, etc.

Il n'y a que des bonnes raisons. Alors, stan fais ton choix.
 

stan876

Expert
Désolé, en disant que c'est pas pro, je veux dire par là, que d'utiliser des champs de type BLOB, c'est plus "la classe".
Perso, pour mon utilisatation, j'avais pas envie de m'embeter et j'ai donc choisi la solution la plus facile.
Après à savoir si c'est mieux ou pas, je ne sais pas trop. C'est vrai que ça prend de la place dans la base de stocker les images directement dedans. Maintenant ... je ne vais pas lancer de polémiques sur ce sujet :), chancun fait comme il veut, et selon ses besoins.

 

juju3334

Nouveau membre
BONJOUR
voici mon programe

<HTML>
<HEAD>
<TITLE> </TITLE>
</HEAD>




<?
// on se connecte à MySQL 12
$db = mysql_connect('localhost', 'root', '');

// on séléctionne la base
mysql_select_db('lamine',$db);


$query = "SELECT distinct Nom , Prenom , Date_de_naissance , photo FROM caracteristique_du_patient
";


$result = mysql_query($query);




print ('<table width=100% border=0>');

$row =mysql_fetch_object($result) ;


print ('</table>');

// on ferme la base

mysql_close();

?>


<IMG SRC="<?php echo $row['photo'] ; ?>" height="240" border="0" />


</body>

</html>
la phhoto ne s'affiche pa
*pouvez-vous m'aider
merci juju
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 126
Messages
6 717 809
Membres
1 586 365
Dernier membre
matiOs1
Partager cette page
Haut