Page 1 sur 1

problème d'affichage d'image dans une base mysql

Posté : 21 oct. 2006, 20:49
par JCVANSEBROUCK
Bonjour

J'essaye d'afficher les images BLOB d'une base mysql sur une page PHP.
Les exemples que j'ai pu trouver sur différents sites me conseille l'emploi d'une page PHP annexe pour pouvoir les afficher.
Mon problème c'est que je n'arrive pas à afficher les images suivant un balayage des id (une seule image sur un identifiant choisi peut être affichée).
dans ma page principale j'ai :
<html><head>
<title>Poneys expérimentés</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
include("_connexion.php");
$query = "SELECT * FROM $table";
$result = mysql_query($query);
while ($val=mysql_fetch_array($result)) {
?>

<table><tr><td>

<?
$id=$val["ID_PRODUIT"];
$GLOBALS['id']=$val["ID_PRODUIT"];
echo $GLOBALS['id'];
echo $id;
echo '<img src="affiche_image.php" ?id=$id width=300 height=200>';
?> </td>

<td><b>
<? echo $val["NOM_PRODUIT"]; ?><br>
<? echo $val["TYPE_PRODUIT"]; ?><br>
<? echo $val["COULEUR_PRODUIT"]; ?> - <? echo $val["ANNEE_NAISSANCE"]; ?> - <? echo $val["HAUTEUR_GAROT"]; ?> cm<br>par
<? echo $val["PERE"]; ?><br> et par
<? echo $val["MERE"]; ?><br>
<? echo $val["ORIGINE_LIGNEE"]; ?><br>
<? echo $val["COMMENTAIRE"]; ?><br>
<? echo $val["PRIX_VENTE"]; ?> F <br>
<? echo $val["PRIX_LOCATION"]; ?> F TTC par mois<br>
<? echo $val["ETAT_VENTE"]; ?><br>
<? echo $val["ETAT_LOCATION"]; ?><br>
</td></tr><hr>
</table>
<? }
?>
</body>
</html>

dans ma page appellée "affiche_image.php" j'ai :

<?php
header('Content-Type: image/jpeg');
include("_connexion.php");
//$id=1;
$requete="SELECT ID_PRODUIT,IMAGE FROM PRODUITS WHERE ID_PRODUIT=$id";
$resultat=mysql_query($requete,$connexion);
$tableau=mysql_fetch_array($resultat);
mysql_close($connexion);
$image=$tableau[1];
//$id=$tableau[0];
echo $image; //affiche l'image dans le navigateur
?>
En mettant la valeur de $id par exemple à 1
on a le résultat.
Je ne vois pas pourquoi je ne peux réinjecter $id dans le script PHP appellé.
Merci pour toute aide

Posté : 21 oct. 2006, 23:39
par Truc
Salut,
Tu devrais peut être récupérer la variable passée dans l'URL en t'aidant de la super globale $_GET.
Plus d'infos ICI

et une petite erreur au niveau de la balise <img>
L'ajout de la variable est en dehors de l'attribut "src"
et la variable est directement intégrée dans la chaine de caractères alors que tu utilises des apostrophes pour débuter cette même chaine.
Les variables ne sont interpretées que lors de l'utilisation de guillemets, ex :
$var = "test";
echo "ceci est un $var"; // affichera "ceci est un test"
echo 'ceci est un $var'; // affichera "ceci est un $var"
Pour faire propre tu peux séparer la variable de la chaine avec une concaténation:
echo "ceci est un ",$var; 
Ce qui donne :
echo "<img src='affiche_image.php?id=",$id,"' width='300' height='200'>";
ou encore (le must, pour ne pas faire interpréter par PHP ce qui ne doit pas l'être) :
<img src='affiche_image.php?id=<?php echo $id; ?>' width='300' height='200'>

Posté : 22 oct. 2006, 12:43
par JCVANSEBROUCK
merci tout d'abord de m'avoir répondu.
Je teste tout ça.
Mais je prendrais sûrement du temps car je ne pratique que trés occasionnellement.
Merci encore

Posté : 22 oct. 2006, 14:39
par Invité
super!

c'est résolu!
ta réponse était également trés claire.
C'est vrai que ce qu'il me manquait était ce $GET.
Je ne pensais qu'on l'utilisait uniquement pour récupérer les valeurs dans les formulaires saisies.

Une chose cependant.
Je n'ais pas compris

"ou encore (le must, pour ne pas faire interpréter par PHP ce qui ne doit pas l'être) :"
<img src='affiche_image.php?id=<?php echo $id; ?>' width='300' height='200'>
J'approndirai cette notion plus tard.
Mais de toutes façons la ligne ne marche pas.

Les lignes de codes sont maintenant :

Code : Tout sélectionner

<html><head> <title>Poneys expérimentés</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <?php include("_connexion.php"); $query = "SELECT * FROM $table"; $result = mysql_query($query); while ($val=mysql_fetch_array($result)) { ?> <table><tr><td> <? $id=$val["ID_PRODUIT"]; echo $id; echo "<img src='affiche_image.php?id=",$id,"' width='300' height='200'>"; ?> </td> <td><b> <? echo $val["NOM_PRODUIT"]; ?><br> <? echo $val["TYPE_PRODUIT"]; ?><br> <? echo $val["COULEUR_PRODUIT"]; ?> - <? echo $val["ANNEE_NAISSANCE"]; ?> - <? echo $val["HAUTEUR_GAROT"]; ?> cm<br>par <? echo $val["PERE"]; ?><br> et par <? echo $val["MERE"]; ?><br> <? echo $val["ORIGINE_LIGNEE"]; ?><br> <? echo $val["COMMENTAIRE"]; ?><br> <? echo $val["PRIX_VENTE"]; ?> F <br> <? echo $val["PRIX_LOCATION"]; ?> F TTC par mois<br> <? echo $val["ETAT_VENTE"]; ?><br> <? echo $val["ETAT_LOCATION"]; ?><br> </td></tr><hr> </table> <? } ?> </body> </html>
et pour mon php d'image :
<?php
header('Content-Type: image/jpeg');
include("_connexion.php");
$requete="SELECT ID_PRODUIT,IMAGE FROM PRODUITS WHERE ID_PRODUIT=".$_GET['id'];
$resultat=mysql_query($requete,$connexion);
$tableau=mysql_fetch_array($resultat);
mysql_close($connexion);
$image=$tableau[1];
echo $image; //affiche l'image dans le navigateur
?>
Le résultat de tout ça pour 2 enregistrements dans la page :
http://pyrene.elevage.free.fr/page1.php

Posté : 22 oct. 2006, 15:19
par Truc
Je n'ais pas compris

"ou encore (le must, pour ne pas faire interpréter par PHP ce qui ne doit pas l'être) :"
<img src='affiche_image.php?id=<?php echo $id; ?>' width='300' height='200'>
C'est uniquement pour séparer PHP et HTML... pour que celà fonctionne correctement il faut fermer les balises php avant cette même ligne :
<?php
....
$result = mysql_query($query);
while ($val=mysql_fetch_array($result)) 
{
   $id=$val["ID_PRODUIT"];
?>
   <table><tr><td>
   <img src='affiche_image.php?id=<?php echo $id; ?>' width='300' height='200'>
   </td>
   <td>
   <b><? echo $val["NOM_PRODUIT"]; ?><br> 
....
<? 
}
?>

Posté : 22 oct. 2006, 19:12
par JCVANSEBROUCK
Effectivement ça marche comme ça. (je me croyais en PHP)
C'est vraiment impeccable.
Cela m'encourage vraiment à persévérer.
"Truc" tu as toute ma gratitude.
bye