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

未经测试,但这样的事情应该可以工作或让你朝着一个好的方向开始:

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

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

$x=0;
while($row = mysqli_fetch_array($result))
{

    if($x==0){      
        echo "<tr>\n";

    }elseif($x%10){
        echo"</tr><tr>\n";
    }
    ?>
    <td width="10%"><?php echo $row['Name']; ?></td>
    <?php
    $x++;       
}
echo "</tr></table>";

mysqli_close($con);
?>
于 2013-07-23T21:13:26.193 回答
1

从一开始在循环中添加一个计数器。

每次通过循环,如果计数器值除以 10 后的余数为 1,则添加<tr>. 如果余数为 0,则如果余数不能被 10 整除,则</tr> 在循环 a之后添加一个Then。</tr>

<?php
echo '<table width="100%" border="1px"><tr width="100%">';
$i = 0;
while($row = mysqli_fetch_array($result))
{
    $i++;
?>
    <?php if ($i%10 ==1): ?><tr><?php endif; ?>
    <td width="10%"><?php echo $row['Name']; ?></td>
    <?php if ($i%10 ==0): ?></tr><?php endif; ?>
<?php
}
if ($i%10 != 0) echo "</tr>";
echo "</tr></table>";
于 2013-07-23T21:16:07.803 回答
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会导致第一行是 9 个单元格而不是 10 个。放在$cell > 0 &&模前面将导致单元格永远不会增加,因为表达式的第一部分总是错误的。在输出单元格后移动if执行它,会导致以空行结束的风险。它可以使用do..while循环来解决,但是如果您至少有一行,则必须预先检查。

长话短说:使用上面的代码。:)

使用一个简单的计数器并在每一行之后重置它

我认为没有模数它更具可读性,尽管您必须初始化$cell为 -1 以防止第一行成为 9 个单元格。不过,我认为这更清洁:

<?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 回答
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 回答