Probleme affichage d'une galerie d'images - Apprendre-PHP.com

Rechercher
Boutique en ligne, solution e-commerce, script PHP et PERL : RAYNETTE

Probleme affichage d'une galerie d'images

Par paintbox -  4 reponses -  Le 16/05/2010 -  Flux RSS - 

Bonjour à tous,

 

voici mon problème. Je cherche à afficher au moyen d'une fonction, le résultat d'une requete faite sur une base de données. Ce résultat comprend des données mais aussi des images. Ma requete est correcte.

 

Je souhaite que l'affichage se fasse dans un tableau de 4 colonnes sur Ylignes (= dépend du nombre de résultats retournés). Dans chaque case du grand tableau vient se mettre un tableau par résultat. Je fais donc 2 boucles for + un While qui parcourt le résultat de ma requete.

 

Je n'arrive pas à obtenir 4 cases (<td>) par ligne (<tr>). 

Soit il me met tous mes resultats sur une ligne, soit tous mes resultats dans une colonne.

En fait, si j'affiche les valeurs de $lignes et $colonnes, elles ont directement les valeurs 9 et 4 càd les valeurs maximum.  

 

Quelqu'un aurait-il une idée? Je n'arrive pas à voir ce qui ne va pas. 

 

Merci de m'avoir lu et pour votre aide.

 
echo '<Table border="1">';
for ($i=1; $i<$lignes; $i++)
{
echo '<tr>';
 
for ($c=1; $c<$colonnes; $c++)
{
While($donnees=mysql_fetch_array($request))
{
echo '<td>';
 
echo '<table border="1">';
echo '<tr>';
echo '<td>'.$donnees["commune"].'</td>';
echo '</tr>';
echo '<tr>';
echo '<td><img src='.$donnees['chemin_image'].'></td>';
echo '</tr>';
echo '<tr>';
echo '<td>'.$donnees["prix"].'</td>';
echo '</tr>';
echo '</table>';
echo '</td>';
}
}
echo '</tr>';
}
echo '</table>';

 

 
 

Réponses apportées à cette discussion

Par Cyrano -  Le 17/05/2010 - 

Salut,

tu devrais essayer en commençant par te construire un tableau HTML avec quelques données en dur pour mettre au point le code que tu veux obtenir : là tu as visiblement tenté de construire ton HTML directement en PHP et ça donne un résultat qui ne correspond en rien à ce que tu veux obtenir. Règle importante : toujours commencer par créer des maquettes en HTML avec des données en dur pour mettre bien au point l'objectif : après seulement tu construis ça dynamiquement.

Pour le cas présent, on va simplifier un peu, regarde :

Tableau de résultats
  1. <?php
  2. // On commence par récupérer le nombre de lignes retournées.
  3. $nLignes = mysql_num_rows($request);
  4. // S'il y a au moins une ligne de données :
  5. if($nLignes > 0):
  6. // Ouverture du tableau
  7. $sTableau = <<<CODE_TABLEAU
  8. <table border="1" summary="Liste des communes">
  9.  
  10. CODE_TABLEAU;
  11. // On boucle sur les résultats pour chaque ligne du tableau
  12. while(false !== ($donnees = mysql_fetch_assoc($request))):
  13. $sTableau .= <<<CODE_TABLEAU
  14. <tr>
  15. <td>{$donnees["commune"]}</td>
  16. <td><img src="{$donnees['chemin_image']}" alt="{$donnees["commune"]}"></td>
  17. <td>{$donnees["prix"]}</td>
  18. </tr>
  19.  
  20. CODE_TABLEAU;
  21. endwhile;
  22. // fermeture du tableau
  23. $sTableau .= <<<CODE_TABLEAU
  24. </table>
  25.  
  26. CODE_TABLEAU;
  27. else:
  28. // Aucun résultat, on affiche un résultat alternatif
  29. $sTableau .= <<<CODE_TABLEAU
  30. <h3>Aucun résultat</h3>
  31.  
  32. CODE_TABLEAU;
  33. endif;
  34. // Affichage du résultat
  35. echo($sTableau);

 

 Suis bien les commentaires que j'ai mis dans le code.

Un détail, j'ai utilisé la syntaxe HEREDOC ($var = <<<CODE...) si ça ne te parle pas, jette un coup d'oeil sur la documentation, ce sera plus rapide.

:)

 

 
Par paintbox -  Le 17/05/2010 - 

Bonjour Cyrano,

merci pour ton aide. J'ai regardé ta solution, mais pour l'instant ne pas trop comprendre. Mon niveau en PHP n'est pas suffisant. J'y regarderai plus tard.

 

Entre temps, j'ai trouvé une solution à mon problème et j'obtiens le résultat que je voulais.

Voici mon code et encore merci pour ton aide

[code]

$colonnes=4;

$maxlignes=$TotalBiens;

$lignes=ceil($TotalBiens/4);

$y=0;

echo '<Table>';

for ($l=0; $l<$lignes; $l++)

{

 

echo '<tr>';

for ($c=0; $c<$colonnes; $c++)

{

$donnees=mysql_fetch_array($request);

echo '<td>';

if($y<$maxlignes)

{

echo '<table>';

echo '<tr>';

echo '<td>'.$donnees["commune"].'</td>';

echo '</tr>';

echo '<tr>';

echo '<td><img src='.$donnees['chemin_image'].'></td>';

echo '</tr>';

echo '<tr>';

echo '<td>'.$donnees["prix"].'</td>';

echo '</tr>';

echo '<tr><td> Colonne : '.$c.'</td></tr>'; 

echo '<tr><td> ligne : '.$l.'</td></tr>';

echo '<tr><td> Donnees : '.$y.'</td></tr>';  

$donnees++;

$y++;

echo '</table>';

}

echo '<br />';

echo '</td>';

}

echo '</tr>';

}

echo '</table>';

 

[/code] 

 

 

 

 
Par  -  Le 07/01/2012 - 

Great Site, very useful and save me a tonne of time. uggs boots cheap

 

 
Par  -  Le 07/01/2012 - 

Thanks for sharing this information. I really like your way of expressing the opinions and sharing the information. It is good to move as chance bring new things in life, paves the way for advancement, steelers jersey

 

 

Ajouter une réponse à la discussion

Seuls les membres loggués sont autorisés à poster dans les forums !