1

我有这个脚本,它产生一个 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++;
}

我想错了。谁能建议我如何正确修改它?

4

1 回答 1

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>'; }
}
于 2012-10-11T12:26:05.650 回答