2010-07-19 3 views
0

У меня есть простая таблица, содержащая около 80 строк, которые я динамически заполняю с помощью PHP. То, что я пытаюсь сделать, - разместить эти строки в кусках для каждого столбца. Поэтому, если у меня есть 80 строк, мне бы хотелось, чтобы 4 столбца из 20 строк или около того, возможно, последний столбец меньше или больше в зависимости от общего количества строк. Общее количество строк может измениться!Динамический макет таблицы с использованием PHP Logic

У меня возникли проблемы с методом реализации, который не станет беспорядочным! Кто-нибудь знает простой способ, которым я могу это реализовать.

Я пробовал использовать счетчик, когда я зацикливал данные, чтобы заполнить таблицу, и когда кратное из 20 достигнуто, перейдите к следующему блоку, но это не сработало для меня, так как у меня остались лишние строки.

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>'; 

} 

Спасибо всем за любую помощь

ответ

1

Я хотел бы сделать:

$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

Впечатляет! Это работало как удовольствие! – Abs

0

не вы хотите, чтобы увидеть остальную часть вашего разделения и иметь дело с этим также?

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

Или вы могли бы % 2 == 0, чтобы увидеть, если это даже, а потом просто умножить весь результат на 10.

Обязательно посмотрите на ceil() и floor() также для обеспечения вашего количества строк круглое число ,

0

, если вы не возражаете, чтобы иметь этот вид порядка клеток:

1 2 3 4 
5 6 7 8 

вы можете использовать <div style='float:left'>$cellValue</div> в цикле без использования таблицы.

Смежные вопросы