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

Résolu
Gregg78 Messages postés 54 Date d'inscription   Statut Membre Dernière intervention   -  
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   -
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
 
<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
 
Et si tu supprimais ton tableau pour passer aux DIV avec CSS ??

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


1
Gregg78 Messages postés 54 Date d'inscription   Statut Membre Dernière intervention   4
 
:-) 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   Statut Contributeur Dernière intervention   132
 
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 54 Date d'inscription   Statut Membre Dernière intervention   4
 
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   Statut Membre Dernière intervention   894
 
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   Statut Membre Dernière intervention   894
 
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