Boucle en php avec les <TR> et <TD>

Résolu/Fermé
Gregg78 Messages postés 55 Date d'inscription samedi 20 décembre 2008 Statut Membre Dernière intervention 16 mars 2022 - 24 août 2009 à 17:21
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 25 août 2009 à 09:07
Bonjour,

j'ai un souci PHP concernant une boucle qui je pense ne doit pas être très compliquée mais je sèche !!!

En fait j'ai une table avec plein d'entrées (des photos) et je voudrais les afficher 4 par 4, ligne par ligne, dans un tableau mais je sais pas trop comment écrire le code PHP.

Voilà mon code actuellement :

<table>
<?php
$retour = mysql_query('SELECT * FROM albums_fr ORDER BY id');
while ($donnees = @mysql_fetch_array($retour))
{
?>
<tr><td><img src="photos/<?php echo $donnees['photo']; ?>"></td></tr>
<?php
}
?>
</table>

Je voudrais donc avoir 4 cellules TD pour la première ligne puis passer à une seconde ligne TR avec 4 nouveaux TD, etc...

Merci d'avance pour votre précieuse aide et voutre temps !

Gregg
A voir également:

7 réponses

Utilisateur anonyme
24 août 2009 à 19:01
<table>
<?php
$retour = mysql_query('SELECT * FROM albums_fr ORDER BY id');
$i = '0';
while ($donnees = @mysql_fetch_array($retour)) {
if ( $i == '0' ) { echo '<tr>'; }
echo '<td><img src="photos/'.$donnees['photo'].'" alt="" /></td>';
$i++;
if ( $i == '4' ) {
echo '</tr>';
$i = '0';
}
}
if ( $i != '0') { echo '</tr>'; }
?>
</table>

3
Utilisateur anonyme
24 août 2009 à 17:24
Et si tu supprimais ton tableau pour passer aux DIV avec CSS ??

Tu n'aurais pas ce problème...


1
Gregg78 Messages postés 55 Date d'inscription samedi 20 décembre 2008 Statut Membre Dernière intervention 16 mars 2022 4
24 août 2009 à 17:36
:-) en effet j'y ai bien pensé mais là je dois utilisé un tableau !
Sinon je suis d'accord qu'avec un float:left cela aurait résolu pas mal de choses assez vite... mais merci pour le conseil !
1
Passarinho44 Messages postés 963 Date d'inscription mercredi 28 mai 2008 Statut Contributeur Dernière intervention 13 juin 2012 132
24 août 2009 à 17:42
Pour garder ton tableau tu peux faire :

<table>
<?php
$retour = mysql_query('SELECT * FROM albums_fr ORDER BY id');
$i = 0;
while ($donnees = @mysql_fetch_array($retour))
{
?>
if ( $i == 0 ) {
echo '<tr>';
} elseif ( $i%4 == 0 and $i != 0) {
echo '</tr><tr>';
}
<td><img src="photos/<?php echo $donnees['photo']; ?>"></td>
<?php
}
?>
</tr>
</table>
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Gregg78 Messages postés 55 Date d'inscription samedi 20 décembre 2008 Statut Membre Dernière intervention 16 mars 2022 4
24 août 2009 à 18:18
Merci pour ce début mais cela ne marche pas !
J'ai rajouté un ++$i; et cela me donne bien une ligne mais sans passage à la ligne au bout des 4 photos...
1
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
24 août 2009 à 19:03
et en passant par un array:

<?php
$retour = mysql_query('SELECT * FROM albums_fr ORDER BY id');
$array_photos=array();
$ligne=0;
$i=0;
while ($donnees = @mysql_fetch_array($retour))
{
//on va empiler les photos dans un array a deux dimensions les lignes en dim1 avec les 4 photos en dim 2
$array_photos[$ligne][$i]=$donnees['photo'];
$i++;
if($i==4){
	///arrivé à 4 on passe a la ligne suivante et on remet $i à 0
	$ligne ++;
	$i=0;
}


}
?>

<table>
<?php
//on va genrer le tableau en parcourant les deux dimensions de l'array
for ($li=0;$li<sizeof($array_photos);$li++){
	//d'abord les lignes en dim1
	echo '<tr>';
	for($j=0;$j<sizeof($array_photos[$li];$j++){
	//puis par ligne les photos  en dim2
		echo '<td><img src="photos/'.$array_photos[$li][$j].'</td>';
	}
echo '</tr>';
}
?>
</table> 
1
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
25 août 2009 à 09:07
après réflexion un petit complément pour le cas ou moins de 4 photos dans la dernière ligne

<?php
$retour = mysql_query('SELECT * FROM albums_fr ORDER BY id');
$array_photos=array();
$ligne=0;
$i=0;
while ($donnees = @mysql_fetch_array($retour))
{
	//on va empiler les photos dans un array a deux dimensions les lignes en dim1 avec les 4 photos en dim 2
	$array_photos[$ligne][$i]=$donnees['photo'];
	$i++;
	if($i==4){
		///arrivé à 4 on passe a la ligne suivante et on remet $i à 0
		$ligne ++;
		$i=0;
	}
}

//si on a moins de 4 photos dans la dernière ligne il faut completer pour avoir toujours 4 td
if(sizeof($array_photos[$ligne])<4){
	while ($i<=4){
		$array_photos[$ligne][$i]='&nbsp';//on complete avec un espace 
	
	}

}
?>
<table>
<?php
//on va genrer le tableau en parcourant les deux dimensions de l'array
for ($li=0;$li<sizeof($array_photos);$li++){
	//d'abord les lignes en dim1
	echo '<tr>';
	for($j=0;$j<sizeof($array_photos[$li];$j++){
	//puis par ligne les photos  en dim2
		echo '<td><img src="photos/'.$array_photos[$li][$j].'</td>';
	}
echo '</tr>';
}
?>
</table> 
0