Probleme de boucle php avec tableau html

ttam03 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
pyschopathe Messages postés 1974 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je suis actuellement en train de développer une site web dynamique. Dans ma bdd j'ai uploader des images, jusque là pas de problème, mais lors de l'affichage j'aimerais faire 4 colonnes et 3 lignes pour afficher une image par mois. La première ligne s'affiche sur la même ligne (comme voulu, mais après ça devrait créer une autre ligne avec 4 colonnes) mais après les images se mette l'une en dessous des autres...

Voici mon code:

<div id="action">
<table><tr>
<?php
while ($donnees = mysql_fetch_assoc ($requete))
{ $i++;
switch ($i)
{
case ($i <= 4):

?>
<td>
<img src="factures/<?php echo $donnees['lien_factures']; ?>" alt="<?php echo $variable['id_factures']; ?>" width="100" height="100" />
</td>
<?php
break;
case (($i > 4)&&($i <=8)):
?>
<tr>
<td>
<img src="factures/<?php echo $donnees['lien_factures']; ?>" alt="<?php echo $variable['id_factures']; ?>" width="100" height="100" />
</td>
</tr>
<?php
break;
case (($i > 8)&&($i <=12)):
?>
<tr>
<td>
<img src="factures/<?php echo $donnees['lien_factures']; ?>" alt="<?php echo $variable['id_factures']; ?>" width="100" height="100" />
</td>
</tr>
<?php
break;
}
}
?>
</tr>
</table>
</div>



Merci de votre aide.
A voir également:

2 réponses

pyschopathe Messages postés 1974 Date d'inscription   Statut Membre Dernière intervention   135
 
Je te conseille plutôt un code de ce genre :
<?php
$images = array();
while ( $donnees = mysql_fetch_assoc ($requete) ) {
  $images[] = $donnees;
}

if ( count( $images ) != 12 ) die( 'Pas le bon nombre d'images' );

echo '<div id="action">';
echo '<table>'
// on boucle sur les lignes
for ( $i=0 ; $i<3 ; ++$i ) {
  echo '<tr>';
  for ( $j=0 ; $j<4 ; ++$j ) {
    echo '<img src="factures/'.$images[$i*$j]['lien_factures'].'" alt="'.$images[$i*$j]['id_factures'].'" width="100" height="100" />';
  }
  echo '</tr>';
}
echo '</table>';
echo '</div>';
Plus propre, plus rapide, plus lisible, et ça devrait faire ce que tu veux.
1
ttam03 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   1
 
Merci de m'avoir répondu. Mais ça me marque "Pas le bon nombre d'images". Ce qui est normale car je n'ai pas 12 images encore, chaque mois je rajoute une photo... (Actuellement j'ai 7 photos donc normalement il y a une ligne de 4 images et une autre de 3 images. Désolé de m'être mal exprimé, Peux tu encore m'aider ?
1
pyschopathe Messages postés 1974 Date d'inscription   Statut Membre Dernière intervention   135
 
Effectivement, ça change des choses >_<. Je modifie le code et je te le renvoie.

edit : voilà le code :
$images = array();
while ( $donnees = mysql_fetch_assoc ($requete) ) {
  $images[] = $donnees;
}

$nbImages = count( $images );
if ( $nbImages < 12 ) {
  for ( $i=$nbImages ; $i<12 ; ++$i ) {
    $images[] = null;
  }
}

echo '<div id="action">';
echo '<table>'
// on boucle sur les lignes
for ( $i=0 ; $i<3 ; ++$i ) {
  echo '<tr>';
  for ( $j=0 ; $j<4 ; ++$j ) {
    if ( $images[$i*$j] !== null ) {
      echo '<td><img src="factures/'.$images[$i*$j]['lien_factures'].'" alt="'.$images[$i*$j]['id_factures'].'" width="100" height="100" /></td>';
    } else {
      echo '<td></td>';
    }
  }
  echo '</tr>';
}
echo '</table>';
echo '</div>';
Avec ce code, le tableau sera intégralement construit, mais certaines cellules seront vides si tu n'as pas le bon nombre d'images. A toi de modifier le style des cellules vides en fonction de ce que tu souhaite voir apparaitre.
0