Afficher une image en PHP à partir de MySQL

Résolu/Fermé
Flo - Modifié par Flo le 19/05/2012 à 18:59
 alkabodi - 18 mai 2013 à 12:35
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

harderpod Messages postés 320 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 22 avril 2014 50
28 mai 2012 à 01:08
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
}
4
harderpod Messages postés 320 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 22 avril 2014 50
28 mai 2012 à 01:09
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>
0