PHP - 动态3列结果表

时间:2012-10-11 12:09:40

标签: php

我有这个脚本,它产生一个3列的结果表:

$cols = 3;
$row = 0;
$column = 0;
$count = 0;

echo '<table>';
while($row = mysql_fetch_assoc($result)) {
   $count++;
   if ($column == 0) {
      echo '<tr>';
   }
   echo "<td>$row['dbField']</td>";
   $column++;
   if ($column >= $cols) {
      $row++;
      echo '</tr>';
      $column = 0;
   }
}
echo '</table>';

这没关系,除非只有1个结果,它只打印一个单元格。我希望它能完成3行,所以在这种情况下,两个单元格将是空的。

我有一个会话变量$_SESSION['r_count']中存储的记录总数,并认为在上述$column++部分之后添加以下代码段相当简单:

if ($count == $_SESSION['r_count'] && $column < $cols) {
    echo '<td></td>';
    $column++;
}
我错了。有人可以建议我如何正确地修改它吗?

1 个答案:

答案 0 :(得分:0)

如果你知道行数(即mysql_num_rows()):

for ($i = 0, $n = ceil($nr_of_rows / $cols); $i != $n; ++$i) {
    $row = mysql_fetch_assoc($result);
    if ($i % $cols == 0) { echo '<tr>'; }
    echo '<td>', $row ? htmlspecialchars($row['dbField']) : '', '</td>';
    if (($i + 1) % $cols == 0) { echo '</tr>'; }
}