Afficher une photo d'une BDD (MVC)
Bonjour,
Après de nombreuses recherche sur différents forums, je n'arrive pas à résoudre mon problème.
Je suis en train de créer un site sous le modèle MVC.
Je souhaite récupérer des images préalablement stockées dans une base de données et ensuite les afficher. J'ai donc créer un champ image avec comme type "longblob", mais à l'affichage obtient une série de code : "?U?z???K>??nv?V8??3???U]U??{?<????0'?? 0'?? 0'?? 0'?? 0'?? 0'?? 0'?? 0'?? " etc.
J'ai lu qu'il était fortement déconseillé de stocker une image dans une base de données mais plus tôt son chemin et ensuite de l'uploader.
Voici le code :
dans le contrôleur :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <?php
$type = $_GET['typeL'];
//On inclut le modèle
include(dirname(__FILE__).'/../modeles/loisirs.php');
// On récupère les loisirs
$L = recuperer_L($type);
// On inclut la vue
include(dirname(__FILE__).'/../vues/loisirs.php');
?> |
dans le modèle :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| <?php
function recuperer_L($type)
{
$L = array ();
$req = mysql_query("SELECT typeL,libelleL,texteL,imageL FROM LOISIRS WHERE typeL='$type'")or die(mysql_error());
echo $req;
while ($data = mysql_fetch_assoc($req))
{
$L[] = $data;
}
return $L;
}
?> |
Et dans la vue :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| <?php
foreach($L as $data)
{
echo '<ul class="articles">';
echo '<li>';
echo "<img src ='images/".$data['imageL']."'.png";
echo '<h3>'.$data['libelleL'].'</h3>';
echo '<div class="para2">'.$data['texteL'].'</div>';
echo '</li>';
echo '</ul>';
}
?> |
Et ma bdd :
CREATE TABLE IF NOT EXISTS 'loisirs' (
'noL' int(10) NOT NULL,
'libelleL' varchar(30) COLLATE utf8_unicode_ci NOT NULL,
'typeL' varchar(30) COLLATE utf8_unicode_ci NOT NULL,
'texteL' mediumtext COLLATE utf8_unicode_ci NOT NULL,
'imageL' longblob NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Contenu de la table 'loisirs'
INSERT INTO 'loisirs' ('noL', 'libelleL', 'typeL', 'texteL', 'imageL') VALUES
(1, 'Peche', 'L', 'À partir du 1er octobre au 31 mars., 0x89504e470d0a1a0a0000.....)
Je vous remercie d'avance,