Alors voici un exemple complet qui fonctionne:
<?php
// on considèrera que ceci sort de ta base de donnée
$donnees = array(
array('id'=>1,'contenu'=>'Un'),
array('id'=>2,'contenu'=>'Deux'),
array('id'=>3,'contenu'=>'Trois'),
array('id'=>4,'contenu'=>'Quatre'),
array('id'=>5,'contenu'=>'Cinq'),
array('id'=>6,'contenu'=>'Six'),
array('id'=>7,'contenu'=>'Sept'),
array('id'=>8,'contenu'=>'Huit'),
array('id'=>9,'contenu'=>'Neuf'),
array('id'=>10,'contenu'=>'Dix')
);
// Affichage de l'entête du tableau
?>
<table>
<tbody>
<?php
// initialisation du compteur
$compteur = 0;
$nb_colonne = 5;
// affichage
// (remplacer le foreach par un while($line = mysql_fetch_*...) pour des données
// provenant réellement d'une bdd)
foreach($donnees as $line){
// Si le modulo est égal à 0, c'est que l'on commence une ligne
if(($compteur % $nb_colonne) == 0){
echo '<tr>'.PHP_EOL;
}
echo '<td>'.PHP_EOL.
'<h1>'.$line['id'].'</h1>'.PHP_EOL.
'<p>'.$line['contenu'].'</p>'.PHP_EOL.
'</td>';
// Si le modulo est égal à $nb_colonne-1, c'est que l'on finit une ligne
if(($compteur % $nb_colonne) == ($nb_colonne -1)){
echo '</tr>'.PHP_EOL;
}
// on incrémente le compteur
$compteur++;
}
?>
</tbody>
</table>
Tu peux faire varier $nb_colonne et tu verras ça fonctionne toujours!