Afficher une image en PHP à partir de MySQL [Résolu/Fermé]

Signaler
-
 alkabodi -
Bonjour,

Je souhaite afficher des images de type "longblob" insérées dans MySQL. Après de multiples recherches, j'ai tenté la solution du script PHP qui "construit" une image.

Je possède une table 'articles' qui comprend un champs 'image'.

Voici le code du constructeur d'images (image.php):

<?php  

if (isset($_GET['id']) )  
{  
 require_once("../modele/Modele.php");  
   
 $image = null;  
 $id = intval($_GET['id']);  
   
 $modele = new Modele("localhost","base","root","");  
 $modele->connexion();  
 $req = "SELECT image FROM articles WHERE id = ".$id;  
 try {  
  $res = $modele->getConnexion()->query($req);  
  $modele->deconnexion();  
  $image = $res->fetch();  
 }  
 catch (Exception $e) {  
  die('Erreur d\'accès à la base : '.$e->getMessage());  
 }  
   
 if ($image != null)  
 {  
  header("Content-Type: image/jpeg");  
  echo($image['image']);  
 }  
}  

?>



Et voici comment j'affiche une image dans une page web :

<img src="image.php?id=1" />



Malheureusement, mon image ne s'affiche pas. Lorsque je fais "Afficher l'image" sous FireFox, j'ai le message suivant "L'image "http://localhost/[...]/vue/image.php?id=1" ne peut être affichée car elle contient des erreurs."

Un print_r de
$image['image']
donne l'image sous sa forme encodée en binaire...

Comment faire pour afficher une image ?

2 réponses

Messages postés
320
Date d'inscription
dimanche 1 novembre 2009
Statut
Membre
Dernière intervention
22 avril 2014
42
bonsoir, euh perso je procède pas comme sa. Dans ma bdd je stock seulement le chemin de mon image par exemple :
id = 1
name = photo
url = images/

du coup en php je fais une fonction qui recupere dans la base de donner
<?php
function afficheImage($id){
    $sql = "SELECT * FROM images WHERE id=".$id;
    $res = mysql_query($sql);
    
    WHILE ($image = mysql_fetch_assoc($res)){
        echo "<IMG SRC='".$image['url'].$image['name'].".jpg'>";
    }
}

?>


du coup quand je veut afficher une photo avec une id que je connait, comme une recherche ou un liste des photos (album) j'utilise la fonction.
donc toujours ton liens sur la miniature admettons:
<img src="image.php?id=1" />

et dans la page image.php
if (isset($_GET['id']) ) {
    $_GET['id'] = addslashes($_GET['id']);//on sécurise les données
    afficheImage($_GET['id']);//on envoi en paramètre l'id récupéré.
}else{
    header ("location: image.php");//si pas de variable get["id"] on redirige vers la page précèdente par exemple
}
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 56918 internautes nous ont dit merci ce mois-ci

Messages postés
320
Date d'inscription
dimanche 1 novembre 2009
Statut
Membre
Dernière intervention
22 avril 2014
42
dans le while de la fonction tu peut ameliorer l'affichage de l'image avec des div ou les paramètre de la balise <img>
Merci harderpod, j'ai abandonné la solution de stocker des images en base qui me parait bien trop compliquée et très peu optimale. Je ne stocke même pas l'adresse de l'image en base, je renomme l'image uploadée en y mettant l'id de l'article associé et je fais un
<img src="images/ <?php echo $article['id'] ?> .jpeg" />
j'ai le meme problem avec le stockage d'une image dans la base de donné et l'aficher sur mon site web SVP aidez moi :( et merci en avance