0

HTML テーブルを使用して、PHP を使用して MySQL テーブルのデータを表示しています。必要なので、テーブルに 10 列あると、次の行に移動します。

<?php
$result = mysqli_query($con,"SELECT * FROM table");

echo '<table width="100%" border="1px"><tr width="100%">';

while($row = mysqli_fetch_array($result))
{
?>
                    <td width="10%"><?php echo $row['Name']; ?></td>
<?php
}
echo "</tr></table>";

mysqli_close($con);
?>

これはどのように行うことができますか?

4

4 に答える 4

1
<table>
<tr>
                  <?php 
                  $endRow = 0;
                  $columns = 10; // number of columns
                  $hloopRow1 = 0;
                  do { 
                  if($endRow == 0  && $hloopRow1++ != 0) echo "<tr>";
                  ?>
                    <td>
                    <?php echo $row['Name']; ?>
                    </td>
                    <?php  $endRow++; if($endRow >= $columns) { ?>       
                  </tr>
                    <?php $endRow = 0;  }
                    } while ($row = mysql_fetch_assoc($result));

                    if($endRow != 0) {
                        while ($endRow < $columns) {
                            echo("<td>&nbsp;</td>");
                            $endRow++;
                        }
                    echo("</tr>");
                    }
                    ?>      
</table>

これはうまくいくはずです。お役に立てれば。

于 2013-07-23T22:18:47.777 に答える
1

モジュロ (%) の使用

10 番目のセルが追加されるたびに、新しいセルが追加されると、現在の行が閉じられ、セルを出力する前に新しい行が最初に開かれます。

<?php
$result = mysqli_query($con,"SELECT * FROM table");

echo '<table width="100%" border="1px"><tr>';

$cell = 0;
while($row = mysqli_fetch_array($result))
{
  if ($cell++ % 10 == 0 && $cell > 1)
  {
?>
                    </tr><tr>
<?php
  }

?>
                    <td width="10%"><?php echo $row['Name']; ?></td>
<?php
}
echo "</tr></table>";

mysqli_close($con);
?>

余分な条件&& $cell > 1は少し奇妙に思えますが、それがないと、最初から空の行が得られます。++前に置くことによってそれを排除する$cellと、最初の行が 10 ではなく 9 セルになります。$cell > 0 &&モジュロの前に置くと、式の最初の部分が常に false であるため、セルがインクリメントされなくなります。セルを出力した後に実行するように を移動するifと、空の行で終了する危険性があります。ループを使用して解決できますdo..whileが、少なくとも 1 つの行があるかどうかを事前に確認する必要があります。

簡単に言えば、上記のコードを使用してください。:)

単純なカウンターを使用し、各行の後にリセットします

$cell最初の行が 9 セルにならないようにするには、-1 に初期化する必要がありますが、モジュロがなくても読みやすいと思います。それにもかかわらず、私はこれがよりきれいだと思います:

<?php
$result = mysqli_query($con,"SELECT * FROM table");

echo '<table width="100%" border="1px"><tr>';

$cell = -1;
while($row = mysqli_fetch_array($result))
{
  if (++$cell == 10)
  {
    $cell = 0;
?>
                    </tr><tr>
<?php
  }

?>
                    <td width="10%"><?php echo $row['Name']; ?></td>
<?php
}
echo "</tr></table>";

mysqli_close($con);
?>
于 2013-07-23T21:17:15.627 に答える