Affichage d'1 seule et mê image après requête

Résolu/Fermé
cebi Messages postés 1 Date d'inscription jeudi 13 novembre 2008 Statut Membre Dernière intervention 13 novembre 2008 - 13 nov. 2008 à 17:04
 cebi - 14 nov. 2008 à 18:26
Bonjour,
Je souhaite réaliser un album photos, le chemin de mes imgs sont dans ma bdd. Cet album demande tout d'abord la rubrique que l'on souhaite visualiser, puis après requête, affichage des miniatures de la rubrique sélectionnée sur la même page. Tous les chemins des miniatures et des gdes imgs se trouvent dans la bdd.
J'ai un problème pour afficher les miniatures dans un tableau, j'ai juste la 1ère image de ma lilste qui s'affiche mais la boucle ne se fait pas, pour afficher les suivantes. J'ai 20 images à afficher et n'en vois qu'une seule qui s'affiche en x x x fois. J'ai pourtant ma boucle while...
Si quelqu'un a une idée, je suis preneuse, car là, je tourne en rond depuis...
Merci d'avance et beaucoup !

Voici le code :
echo "<form action='galerie.php' method='POST' enctype='multipart/form-data'>
<br />
Choisissez la rubrique qui vous intéresse : <br /><br />";

// Connection au serveur mySQL

//Connexion base

//Requête : chercher les rubriques existantes dans la bdd
$query = "SELECT RubriqueID, RubriqueName FROM rubrique ORDER BY RubriqueName DESC";
$result = mysql_query($query) OR die("Les rubriques existantes n'ont pas été trouvées");

//Formulaire pour selectionner une rubrique existante
echo "<select name = 'select_rub'>";
$Selected = 0;
while($row = mysql_fetch_array($result)){
if($Selected ==0){
echo '<option value ="',$row[0], '" selected="selected">',$row[1],'</option>';
$Selected = 1;
}
else{
echo '<option value ="', $row[0], '">',$row[1],'</option>';
}
}
echo "</select>
<br /><br />
<input type='submit' value='Trouver la rubrique qui vous intéresse'/>
</form>";//Fin du Formulaire

//Récupérer RubriqueID selectionné ainsi que son nom et sa description
$RubriqueID = $_POST['select_rub'];
$query = "SELECT RubriqueID, RubriqueName , RubriqueDesc
FROM rubrique
WHERE RubriqueID='$RubriqueID'";

$reponse = mysql_query($query) OR die("Les rubriques existantes n'ont pas été trouvées");
$ligne = mysql_fetch_assoc($reponse);
$RubriqueID = $ligne['RubriqueID'];
$RubriqueName = $ligne['RubriqueName'];
$RubriqueDesc = $ligne['RubriqueDesc'];
echo "Description de la rubrique : "."<strong><font color='red'>".$RubriqueDesc."</font></strong>";

//Récupérer le nbre d'images à afficher
$RubriqueID = $_POST['select_rub'];
$query = "SELECT count(ImageID) AS ImgCount
FROM image
WHERE RubriqueID='$RubriqueID'";
$rs = mysql_query($query) OR die("Le nbre d'images n'a pas pu être évalué");
$ImgCount = (mysql_result($rs,0,"ImgCount")/2);
echo "<br /><br />Cette rubrique possède : $ImgCount image(s)<br /><br />";

//Chercher dans la table Image les chemins et infos pour afficher les miniatures
$RubriqueID = $_POST['select_rub'];
$query = "SELECT RubriqueID, ImageID, ImageName, ImageChemin, MiniName, MiniChemin, LargeurDestination, HauteurDestination
FROM image
WHERE RubriqueID='$RubriqueID'
ORDER BY ImageName";
$resultat = mysql_query($query) OR die("Les informations concernant les images n'ont pas été récupérés de la BDD");

//Commence le tableau pour afficher les miniatures
echo "<table align='center'>";
//Initialisation variable
$i=0;

//Récupération du résultat de la requête
while($row = mysql_fetch_array($resultat))
{
//On se base sur le nombre d'images trouvées pour "fabriquer" le tableau
for($i;$i<$ImgCount;$i++)
{

//Commence une ligne
echo "<tr>";
//Commence colonne 1
echo "<td align='center'>";
//Récupére les données de la requête pour pouvoir ensuite les afficher
$ImageID = $row['ImageID'];
$ImageName = $row['ImageName'];
$ImageChemin = $row['ImageChemin'];
$MiniName = $row['MiniName'];
//Chemin absolu de la miniature
$MiniChemin = $row['MiniChemin'];
//Je récupère les dimensions de l'image
$LargeurDestination =$row['LargeurDestination'];
$HauteurDestination =$row['HauteurDestination'];
//J'affiche la miniature
echo "<a href='$ImageChemin' target='blank'>$ImageName<br/><img src='$MiniChemin' width='$LargeurDestination' height='$HauteurDestination' border =1 alt='$ImageName' />";
echo "</td>";

//Commence colonne 2
echo "<td align='center'>";
//Récupére les données de la requête pour pouvoir ensuite les afficher
$ImageID = $row['ImageID'];
$ImageName = $row['ImageName'];
$ImageChemin = $row['ImageChemin'];
$MiniName = $row['MiniName'];
//Chemin absolu de la miniature
$MiniChemin = $row['MiniChemin'];
//Je récupère les dimensions de l'image
$LargeurDestination =$row['LargeurDestination'];
$HauteurDestination =$row['HauteurDestination'];
//J'affiche la miniature
echo "<a href='$ImageChemin' target='blank'>$ImageName<br/><img src='$MiniChemin' width='$LargeurDestination' height='$HauteurDestination' border =1 alt='$ImageName' />";
echo "</td>";

//Commence colonne 3
echo "<td align='center'>";
//Récupére les données de la requête pour pouvoir ensuite les afficher
$ImageID = $row['ImageID'];
$ImageName = $row['ImageName'];
$ImageChemin = $row['ImageChemin'];
$MiniName = $row['MiniName'];
//Chemin absolu de la miniature
$MiniChemin = $row['MiniChemin'];
//Je récupère les dimensions de l'image
$LargeurDestination =$row['LargeurDestination'];
$HauteurDestination =$row['HauteurDestination'];
//J'affiche la miniature
echo "<a href='$ImageChemin' target='blank'>$ImageName<br/><img src='$MiniChemin' width='$LargeurDestination' height='$HauteurDestination' border =1 alt='$ImageName' />";
echo "</td>";


//Ferme la ligne
echo "</tr>";

//Si je suis à 6, retour à la ligne
$i=$i+3;
}
}
//Termine le tableau
echo "</table>";

//Fermeture de la connexion
mysql_close();
A voir également:

4 réponses

Chupachups23 Messages postés 73 Date d'inscription jeudi 13 novembre 2008 Statut Membre Dernière intervention 9 décembre 2009 18
14 nov. 2008 à 17:54
Oui il te faut deux variables une pour le nombre que tu souhaite d'image pas ligne et et l(autre pour tester combien il y a d'image sur la ligne.
$NbrImgParLigne = 3;
$NumImgLigne = 0;

while ($row = mysql_fetch_array($result))  
{
     if ($NumImgLigne>=$NbrImgParLigne)
     {
         echo "</tr><tr>";
         $NumImgLigne = 0;
     } 

     $NumImgLigne++;
     echo "<td align='center'>";
$ImageID = $row['ImageID'];
$ImageName = $row['ImageName'];
$ImageChemin = $row['ImageChemin'];
$MiniName = $row['MiniName'];
//Chemin absolu de la miniature
$MiniChemin = $row['MiniChemin'];
//Je récupère les dimensions de l'image
$LargeurDestination =$row['LargeurDestination'];
$HauteurDestination =$row['HauteurDestination'];
//J'affiche la miniature
echo "<a href='$ImageChemin' target='blank'>$ImageName<br/><img src='$MiniChemin' width='$LargeurDestination' height='$HauteurDestination' border =1 alt='$ImageName' />"; 

     echo "</td>";
1
Merci à vous deux !
Cela fonctionne très bien et lorsque je vois ça, c'est simple à comprendre..
Pourquoi faire simple quand on peut faire compliqué ?!!
Encore Merci et bon WE.
0
Utilisateur anonyme
13 nov. 2008 à 19:01
Bonsoir,
le nom de l'image à afficher ne varie pas dan les colonnes ; c'est donc normal que la même image soit affichée.
0
Bonjour et merci pour ta réponse.
Mais je ne sais pas comment faire puisque (pour moi, et je suis débutante...) je récupère les données grâce à "mysql_fetch_array", je ne peux donc pas mettre un nom d'image puisque la réponse est récupérée de ma bdd et d'une sélection de rubrique. Il faut peut-être un $row++ quelque part...je vais de nouveau essayer !En tout cas, si tu as une idée, je suis preneuse !
0
Utilisateur anonyme
14 nov. 2008 à 14:00
Bonjour,

Pour voir ce que retourne la requête fais :

//Récupération du résultat de la requête
while($row = mysql_fetch_array($resultat))
{
echo "<pre>";print_r($row); echo "</pre>";

cela te permettra je pense de mieux voir ce qu'il fut faire.

ou alors donne la structure de ta BDD.
0
Giheller,
Je viens de faire ta formule et tout fonctionne :=> il me le ressort bien en forme de tableau array et me donne bien tout le descriptif de toutes les images.
En fait, c'est à chaque fois que je mets des <td> qu'il me reprend la même image, cela ne s'incrémente plus, il ne va pas chercher l'image d'après.
Si je fais juste :
while($row=mysql_fetch_array(resultat)
{
echo "<table>";
echo "<tr>";
//Je récupère ici le résultat de la requête ($ImageID = $row['ImageID'] etc...)
echo "<td>";
echo "<a href="......><img src =.......></a>";(même chose que dans le code ci-dessus)
echo "</td></tr></table>";
}
Là, j'ai bien mes images qui sont les unes sous les autres.(Normal, j'ai juste une colonne)
Une idée ?
0
Utilisateur anonyme
14 nov. 2008 à 16:21
Bonjour,
il y a encore des choses abstraites donc je suppose que
chaque row renvoit les informations d'une image
il faut donc récupérer les informations de trois lignes de la table avant d'afficher une ligne du tableau.

0