IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Affichage d'image après requete SQL


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 221
    Par défaut Affichage d'image après requete SQL
    Bonsoir,

    J'ai un souci d'image dans un tableau qui s'affiche à l'aide d'une requête. Je croyais avoir trouvé le problème mais en fait non, c'était une fausse joie.

    J'avais changé de content type en passant de jpg en jpeg
    Toutes les images ne s'affichent pas. J'en ai que quelques unes, jamais les mêmes mais ça ne fonctionnent pas.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    <html>
    <head>
    <title>charlesvannet.com/fondecran.html</title>
    <style type="text/css" title="mes_styles" media="all">
    				body 
    				{ 	
    						background-color: black;
    						color: white;				
    						font-family:Verdana, sans-serif, Verdana;
    						font-size: small;
    						letter-spacing: 1px;
    				}
     
    				a:link 
    				{
    						color:#FFFFFF;
    						text-decoration:;
    						background-color:;
    				}
    				a:visited 
    				{
    						color:#666666;
    						text-decoration:;
    						background-color:;
    				}
     
    				.marge 
    				{
    				margin-left: 1170px;
    				}
     
     
    </style>
     
    </head>
    <body bgcolor="#000000">
    <?php
    include('connect.php');
    $query = "SELECT id,miniature FROM pictures";
    $resultat = mysql_query($query);
    $nb_lignes = mysql_num_rows($resultat);
    $nb_colonnes = 3;
    echo $nb_lignes;
     
    echo'<table border="0" cellspacing="5" cellpadding="10" width="100%" bgcolor="#000000">';
    		echo'<tr>';
        		echo'<td align="center" colspan="3"><H3>Personnalisez votre bureau</H3><br /><br /><br /></td>';     
        	echo'</tr>';
     
    echo '<tr>';
    $i = 0;
    while ($row = mysql_fetch_assoc($resultat)) { // Tant qu'il y a une ligne
    	if ($i > 0 && $i%$nb_colonnes == 0) echo '</tr><tr>';
    	echo '<td align="center">';
    	echo '<img src="affiche_photo.php?id='.$row['id'].'" width="180" height="136" border="1">';
    	echo '</td>';
    	$i++;
    }
     
    //si on a affiché qqch on ferme la ligne
    echo '</tr>';
     
    echo'</table>';
    mysql_close($liendb);
     
     
    ?>
     
    </body>
    </html>
    C'est la page principal et voici le code de la page affiche_photo.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <?php
     
    require("connect.php");
    $id=$_GET['id'];
     
    $requete= "SELECT miniature FROM pictures WHERE id = $id";
    $resultat=mysql_query($requete);
     
    if(mysql_num_rows($resultat)==1)
    {
    	$image=mysql_result($resultat,0,"miniature");
     
    	header("Content-type: image/jpeg");  
    	print $image; 
     
    }
     
    mysql_close();
    ?>
    J'ai essayé plusieurs choses et ça ne change rien. Par contre quand je fais http://monsite/php/affiche_photo.php?id=8
    l'image s'affiche bien. Comment résoudre le problème ou à la limite comment utiliser un lien pour aficher toutes les images.

    Merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Quand l'image ne s'affiche pas, est ce que le chemin de la miniature est bon construit ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 221
    Par défaut
    Oui parce que quand je regarde le code html généré je vois bien toutes mes images avec le bon id qui se trouve dans la base. De plus quand je fais CTRL F5, ce ne sont pas toujours les mêmes images qui s'affichent.

    Je ne vois vraiment plus le problème.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    a quoi sert le fichier affiche-photo.php ?
    sachant qu'il suffit de remplacer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<img src="affiche_photo.php?id='.$row['id'].'" width="180" height="136" border="1">';
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    echo '<img alt="" src="'.$row['miniature'].'" width="180" height="136" border="1" />';
     
    ou meme :
    echo '<img alt="" src="'.$row['miniature'].'" width="180" border="1" />'; 
     
    (en laissant height s'adapter librement, dans le cas de photos de tailles differentes)
    A voir aussi : http://j-reaux.developpez.com/tutori...-tableau-html/

  5. #5
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 221
    Par défaut
    J'ai essayé et là du coup j'ai des symboles, des trucs illisible sur ma page. J'ai stocké mes photos dans ma base sous forme longblob

    Le fichier affichage_image sert à retranscrire le format. enfin du moins à afficher l'image et pas les symboles. Je sais pas si je suis claire.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Ok, je comprends mieux.
    Mais tu risques de rapidement surcharger ta BD.

    Il aurait été préférable d'enregistrer les images dans un dossier, et seulement leur NOMs dans la BD.

  7. #7
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 221
    Par défaut
    Je veux bien changer de méthode. J'ai déjà toutes mes images dans un dossier /pictures/fondecran sur mon ftp de free.

    Que dois-je faire pour qu'elles puissent toutes s'afficher?

  8. #8
    Invité
    Invité(e)
    Par défaut
    Un tuto :
    Fonctions de redimensionnement d'images
    Utilisation avec BD (redimensionner image + picto après upload) ou dans un dossier (recherche des images contenues dans un dossier, redimensionnement eventuel, ...)
    http://j-reaux.developpez.com/tutori...sionner-image/

    Dans ton cas, si j'ai bien compris, les images sont enregisrtée directement dans la BD (stockées sous forme longblob).
    Ce qu'il faut d'abord faire, c'est un update de la BD pour enregistrer les NOMS (lerepimg/limage.jpg ...) dans la BD (creation d'un champ nomimage format varchar 255).

  9. #9
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 221
    Par défaut
    J'ai regardé ça à l'air pas mal le site.
    Et oui j'ai les fichiers dans ma base en type longblob.
    Les images s'affichent bien mais il en manque certaines et quand je fais un echo "nb_lignes" pour voir que j'ai bien le nombre d'images qu'il me faut j'ai bien 7 qui s'affiche.

  10. #10
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 221
    Par défaut
    Finalement tout fonctionne. J'ai passé l'image avec le chemin donc mon type longblob ne sert plus.

    Merci pour votre aide

  11. #11
    Invité
    Invité(e)
    Par défaut
    Et pour ceux qui suivent ce post, mais n'ont pas eu le plaisir d'un tete-a-tete avec une princesse :

    La solution retenue :
    Avec dans la BD, pour chaque image :
    id : cle primaire
    name : nom de l'image (ex. : "monimage.jpg")
    path : dossier des images (ex. : "mondossier/mes images/" ) avec un / a la fin

    pageimages.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <?php
    require("connect.php");
    // requete des images ....
    $requete = "SELECT id FROM pictures";
    $resultat = mysql_query($requete);
    // affichage
    while ($row = mysql_fetch_assoc($resultat))
    {
    ?>
    ...
    <img alt="" src="affiche_photo.php?id=<?php echo $row['id']; ?>" style="width:250px" />
    ...
    <?php
    }   // fin while
    mysql_close();
    ?>
    affiche_photo.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    $requete_affiche = "SELECT miniature FROM pictures WHERE id = ".$_GET['id'];
    $resultat_affiche = mysql_query($requete_affiche);
    $row_affiche = mysql_fetch_assoc($resultat_affiche);
    if(mysql_num_rows($resultat_affiche) == 1) {
       echo $row_affiche['path'].$row_affiche['name'];
    }
    ?>

  12. #12
    Invité
    Invité(e)
    Par défaut
    Une solution beaucoup plus simple,
    avec en plus lien vers l'image en grand (dans une nouvelle fenetre).
    Avec dans la BD, pour chaque image :
    id : cle primaire
    name : nom de l'image
    path : dossier des petitesimages
    path_big : dossier des grandes images
    (les grandes et petites images ont le meme nom)

    pageimages.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <?php
    require("connect.php");
    // requete des images ....
    $requete = "SELECT * FROM pictures";
    $resultat = mysql_query($requete);
    // affichage des images
    while ($row = mysql_fetch_assoc($resultat))
    {
    ?>
    ...
    <a target="_blank" href="<?php echo $row['path_big'].$row['name']; ?>">
    <img alt="" src="<?php echo $row['path'].$row['name']; ?>" style="width:250px" />
    </a>
    ...
    <?php
    } // fin while
    mysql_close();
    ?>
    Et c'est tout !

    POURQUOI FAIRE COMPLIQUE, QUAND ON PEUT FAIRE L'IMPOSSIBLE ? ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] affichage apres requete SQL
    Par domino313131 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 06/03/2011, 17h44
  2. Affichage De Resulats De Requetes Sql
    Par anonix dans le forum JDBC
    Réponses: 9
    Dernier message: 14/10/2006, 18h04
  3. [Tableaux] affichage tableau php apres requete sql count
    Par heteroclite dans le forum Langage
    Réponses: 1
    Dernier message: 13/09/2006, 20h53
  4. Réponses: 3
    Dernier message: 14/04/2006, 09h32
  5. Problèmes d'espaces après requete SQL
    Par innosang dans le forum Bases de données
    Réponses: 7
    Dernier message: 29/04/2004, 16h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo