2010-07-19 8 views
0

J'ai une table simple qui a environ 80 lignes, que je peuple dynamiquement en utilisant PHP. Ce que j'essaye de faire est de mettre en page ces rangées en morceaux pour chaque colonne. Donc, si j'ai 80 lignes, je voudrais 4 colonnes de 20 lignes ou plus, peut-être la dernière colonne a moins ou plus en fonction du nombre total de lignes. Le nombre total de lignes peut changer! J'ai des difficultés à trouver une méthode de mise en œuvre qui ne sera pas salissante! Quelqu'un sait d'une manière simple que je peux implémenter ceci. J'ai essayé d'utiliser un compteur comme je boucle les données pour peupler la table et quand un multiple de 20 est atteint passer au bloc suivant mais cela n'a pas fonctionné pour moi car il me restait des rangées supplémentaires.Mise en page dynamique de tableau en utilisant PHP Logic

foreach($indexes as $index){ 

    $counter++; 

    echo '<tr>'; 

    if($counter > 20){ 

     $multiplier = $counter/20; 

     $head = '<td></td>'; 

     for($i=1; $i<$multiplier; $i++){ 

      $head .= '<td></td>'; 

     } 

    } 

    if($counter < 20){ 

     $head = ''; 

    } 

    echo "$head<td>$index</td><td><input id='$index' name='$index' type='checkbox' /></td>"; 

    echo '</tr>'; 

} 

Merci à tous pour toute aide

Répondre

1

je ferais:

$nbCols = 4; 
$nbRows = count($indexes)/$nbCols; 
for($row=0; $row<$nbRows; $row++) { 
    echo "<tr>"; 
    for($i=0; $i<$nbCols; $i++) { 
     $index = $indexes[$row + ($i*$nbRows)]; 
     echo "<td>$index</td><td><input id='$index' name='$index' type='checkbox' /></td>"; 
    } 
    echo "</tr>"; 
} 
+0

Impressionnant! Cela a fonctionné comme un régal! – Abs

0

Ne vous voulez voir le reste de votre division et faire face à cela aussi?

if($counter % 20 == 0){ 
    // You've no remainder 
}else{ 
    // Do another loop to output the odd rows 
} 

Ou vous pourriez % 2 == 0 pour voir si elle est encore, puis multipliez tout l'ensemble résultat par 10.

Assurez-vous de regarder ceil() et floor() aussi pour assurer votre nombre de lignes est un nombre rond .

0

si vous ne craignez pas d'avoir ce genre d'ordre cellulaire:

1 2 3 4 
5 6 7 8 

vous pouvez utiliser <div style='float:left'>$cellValue</div> dans la boucle sans utilisation de table.