gpt4 book ai didi

PHP 循环排序表

转载 作者:可可西里 更新时间:2023-11-01 07:54:27 28 4
gpt4 key购买 nike

我在数据库中查询按字母顺序编号为 1-26 的姓名。我有以下代码,但由于 HTML 的结构是 tr 然后 td,因此表格按行而不是按列的字母顺序显示。如何让它按列顺序显示?

$query = mysql_query("SELECT name FROM people WHERE main=1 ORDER BY id");
$i = 0;
while($result = mysql_fetch_array($query)) {
$name = $result['name'];
if ($i % 5 == 0) echo "<tr>\n";
echo "<td width=\"150\">";
echo "<a href=\"#".strtolower($name)."\">".$name."</a><br />";
echo "</td>\n";
$i++;
if ($i % 5 == 0) echo "</tr>\n";
};

阿尔法贝塔查理
三角洲 echo 狐步舞

对比

阿尔法查理 echo
beta delta 狐步舞

此外,如果有更有效的方法,我愿意重新编写代码。

最佳答案

您可以大步访问输出数组。计算结果数除以 5 所需的行数,并将行数用作步幅。

$ncols = 5;
$nrows = $nresults / $ncols + ($nresults % $ncols == 0 ? 0 : 1);

for ($i = 0; $i < $nrows; $i++)
{
// start row
for ($j = 0; $k < $ncols; $j++)
{
// print $results[$nrows * $j + $i]
}
// end row
}

您必须先将查询结果传输到数组 $results 中。由于您必须知道结果的总数,所以这是强制性的,但我很好奇是否有人有可以在获取结果时工作的解决方案。

更新:请参阅 Justin 的回答以获得一个很酷的解决方案,该解决方案可以在逐行获取查询结果的同时增加输出。由于它目前正在处理中,这里有一个摘要(致谢 Justin):

$nresults = mysql_num_rows($query);
$ncols = 5;
$nrows = (int) ceil($nresults / $ncols);

$i = 0; $cols = array_fill(0, $nrows, "");

while ($result = mysql_fetch_array($query))
$cols[$i++ % $nrows] .= "<td>$result['name']</td>";

echo "<tr>" . implode("</tr><tr>", $cols) . "</tr>";

关于PHP 循环排序表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6617656/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com