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つしかない場合は、1つのセルしか出力されません。3行目を終了したいので、この場合、2つのセルは空になります。

セッション変数に格納されているレコードの総数があり、上記の一部の$_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 に答える