使用PHP Logic的动态表格布局

时间:2010-07-19 12:30:20

标签: php html css

我有一个简单的表,有大约80行,我使用PHP动态填充。我想要做的是为每列布局这些行的块。所以,如果我有80行,我想要4列20行左右,也许最后一列的数量越来越少,具体取决于总行数。总行数可以改变!

我无法想出一个不会弄乱的实现方法!任何人都知道我可以实现这一点的简单方法。

我尝试使用计数器,因为我循环数据以填充表格,当达到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>';

}

感谢大家的帮助

3 个答案:

答案 0 :(得分: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>";
}

答案 1 :(得分:0)

你不想看到你师的剩余部分并处理它吗?

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

或者您可以% 2 == 0查看它是否均匀,然后将整个结果乘以10。

请务必查看ceil()floor(),以确保您的行数是一个整数。

答案 2 :(得分:0)

如果您不介意拥有这种单元格顺序:

1 2 3 4
5 6 7 8

您可以在循环中使用<div style='float:left'>$cellValue</div>而不使用表格。