Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

RE: Afficher des images en SQL/PHP

4 réponses
Avatar
aliwiyao
Bonjour a Tous. SVP, qq'un peut-il m'aider ?
J'ai opte qd meme pour le fait de stocker des images directement ds ma
base vu mes besoins.
Mais mon code images.php dont le contenu ci-dessous ne m'affiche que la
toute premiere image trouvee . Il n'y pas parcours de toute la table
images. Une aide ? Merci de repondre


<?php
include("connexion.php");
$query = " SELECT * FROM images ";
$result = mysql_query($query) or die (mysql_error());
while ($line = mysql_fetch_array($result, MYSQL_NUM)) {
header ('Content-type: .$line[2]');
echo $line[2];
//echo $line["product_img"];
}
?>

4 réponses

Avatar
Calimero
wrote:
Bonjour a Tous. SVP, qq'un peut-il m'aider ?
J'ai opte qd meme pour le fait de stocker des images directement ds ma
base vu mes besoins.
Mais mon code images.php dont le contenu ci-dessous ne m'affiche que la
toute premiere image trouvee . Il n'y pas parcours de toute la table
images. Une aide ? Merci de repondre

<?php
include("connexion.php");
$query = " SELECT * FROM images ";
$result = mysql_query($query) or die (mysql_error());
while ($line = mysql_fetch_array($result, MYSQL_NUM)) {
header ('Content-type: .$line[2]');
echo $line[2];
//echo $line["product_img"];
}
?>


Je pars du principe que tu mets un content type du genre image/jpeg et
que tu envoies le image (données binaires).
Enfin, tu essaies de mettre le content-type parce que le code fourni,
j'ai qq doutes sur sa validité opérationnelle.

Bref, dans ces conditions, il est normal que tu ne puisses pas
afficher plusieurs images à la fois.
C'est d'ailleurs étonnant que ca "tombe en marche" avec la première image.

Les images, c'est pas de l'HTML. Tu peux pas te contenter de les
"empiler" en espérant que ca marche.

Si tu veux afficher toutes les images sur une page, il faut procéder
en deux temps:

Par ex:
- 1 script PHP qui récupère la liste des images et produit de l'HTML
avec des balises <img src...>

- 1 script PHP qui va renvoyer une unique image

Un truc du genre (code à la main non testé, pour le "concept"):
gallerie.php:
<?php
// params SQL...
$sql = "SELECT IdImage, TitreImage FROM Images WHERE...";
$res = mysql_query($sql, $db);
while ($img = mysql_fetch_assoc($res))
{
echo "<img src="getimage.php?id=" . $img['IdImage'] . """;
echo " alt="" . $img['TitreImage'] . ""><br>n";
}
// fermeture connexion SQL...
?>

getimage.php (je considère que ton code plus haut marche +/-)
<?php
// connexion SQL...
$id = $_GET['id'];
$sql = "SELECT ImageBlob, ImageCT FROM Images WHERE IdImage = $id";
$res = mysql_query($sql, $db);
if ($img = mysql_fetch_assoc($res))
{
header('Content-type: ' $img['ImageCT']);
echo $img['ImageBlob'];
}
else
{
// Pas d'image trouvée !
}
?>

Au final, gallerie.php produit un truc du genre:
<img src="getimage.php?idB"><br>n
<img src="getimage.php?id!"><br>n
<img src="getimage.php?id„"><br>n

Le navigateur appelle alors 3 fois getimage.php pour avoir les 3 images.

Voila en gros le principe (hormis le fait que le code est tapé à la
volé dans mon Thunderbird), c'est bien sûr pas du code pour mettre en
production...

Sinon, repose-toi la question si tu veux vraiment stocker les images
dans la base de données. Ca offre certains avantages (tu ne te soucis
pas du stockage...) par contre, ca alourdit un peu le travail du
serveur SQL et ca demande certains paramétrages.
Puis la sauvegarde de la base change un peu de catégorie du coup.

--
@+
Calimero

Avatar
MaXX
wrote:
Bonjour a Tous. SVP, qq'un peut-il m'aider ?
J'ai opte qd meme pour le fait de stocker des images directement ds ma
base vu mes besoins.
Mais mon code images.php dont le contenu ci-dessous ne m'affiche que la
toute premiere image trouvee . Il n'y pas parcours de toute la table
images. Une aide ? Merci de repondre
'jour,


Ca marche pas comme ca, chaque image a ses propres caractéristiques...
Faut réécrire le script pour qu'il ne sorte qu'une image à la fois et
l'appeler pour chaque image (genre <img src"image.php?id=2"> - pas
oublier de vérifier que id est numerique)...

2c,
--
MaXX

Avatar
Alistaire
Merci a tous les deux. Je vais encore cogiter la dessus selon vos
conseils.
Avatar
Alistaire
S'lut
Solution trouvee, Bonne continuation