Probleme de boucle php avec tableau html

Fermé
ttam03 Messages postés 2 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 11 juin 2009 - 11 juin 2009 à 09:56
pyschopathe Messages postés 1974 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 - 11 juin 2009 à 15:59
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 dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
11 juin 2009 à 10:59
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 jeudi 11 juin 2009 Statut Membre Dernière intervention 11 juin 2009 1
11 juin 2009 à 11:07
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 dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
11 juin 2009 à 15:59
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