加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP循环到排序表

发布时间:2020-12-13 21:42:30 所属栏目:PHP教程 来源:网络整理
导读:我正在查询数据库中按字母顺序编号为1-26的名称.我有以下代码,但由于 HTML是按结构tr而不是td,表格按行按字母顺序排列,而不是列.如何按列顺序显示? $query = mysql_query("SELECT name FROM people WHERE main=1 ORDER BY id");$i = 0;while($result = mysq
我正在查询数据库中按字母顺序编号为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";
};

alpha beta查理
delta echo foxtrot

阿尔法查理回声
beta delta foxtrot

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

解决方法

编辑:

在我自己,Kerrek SB和OP bswinnerton之间的评论中讨论之后,以下代码似乎是最有效的:

$columns = 3;
$rowcount = mysql_num_rows($query);
$rows = ceil($rowcount / $columns);
$rowdata = array_fill(0,$rows,"");
$ctr = 0;
while ($result = mysql_fetch_array($query))
    $rowdata[$ctr++ % $rows] .= '<td>'.$result['name'].'</td>';
echo '<tr>'.implode('</tr><tr>',$rowdata).'</tr>';

这将创建三个垂直填充的列(我的原始答案将创建三行).它还正确地初始化数组(防止PHP警告),为不能被列计数整除的结果计数产生正确的行计数,并且结合了Kerrek巧妙的“在下标中计算行”技巧.

原帖:

你可以使用数组和implode()这样,你只需要通过你的结果:

$row = 0;
$rows = 3;
$rowdata = array();
while($result = mysql_fetch_array($query))
{
   if ($row >= $rows) $row = 0;
   $rowdata[$row++] .= '<td>'.$result['name'].'</td>';
}

echo '<tr>'.implode('</tr><tr>',$rowdata).'</tr>';

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读