You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP数据库数据展示重复生成多表问题求助

解决单表格展示所有数据库记录的问题

嘿,我懂你现在的困扰——循环输出数据库记录时,每条数据都单独生成了一个带表头的完整表格,这完全不是想要的效果。问题的根源其实很明显:你把整个表格的结构(包括<table>标签、表头行和闭合标签)都放在了while循环内部,所以每遍历一条记录就会新建一个独立表格。

修正后的代码

<?php
include_once 'dbh.inc.php';
$sqli = "SELECT datum, v, vo, nav FROM months;";
$result = mysqli_query($conn, $sqli);
$resultCheck = mysqli_num_rows($result);

if ($resultCheck > 0) {
    // 先输出表格框架和表头,仅执行一次
    echo "<table>";
    echo "<tr>";
    echo "<th>Datum</th>";
    echo "<th>Vakantie uren</th>";
    echo "<th>Vakantie uren opgennomen</th>";
    echo "<th>Nieuw aantal vakantie uren</th>";
    echo "</tr>";

    // 循环只输出数据行,每条记录对应一行
    while ($row = mysqli_fetch_assoc($result)) {
        // 保留你原来的空记录过滤逻辑,跳过字段不全的条目
        if($row['datum'] AND $row['v'] AND $row['vo'] AND $row['nav']) {
            echo "<tr>";
            echo "<td>".$row['datum']."</td>";
            echo "<td>".$row['v']."</td>";
            echo "<td>".$row['vo']."</td>";
            echo "<td>".$row['nav']."</td>";
            echo "</tr>";
        }
    }

    // 最后闭合整个表格
    echo "</table>";
}
?>

关键改动说明

  • 表格结构移到循环外:把<table>和表头<tr><th>...</th></tr>放在while循环之前,确保表头和表格框架只生成一次;把</table>放在循环结束后,让所有数据行都被包裹在同一个表格里。
  • 循环仅输出数据行:while循环内部只负责生成每条记录对应的<tr><td>...</td></tr>,这样所有数据都会追加到同一个表格中,不会重复创建表格。
  • 保留空记录过滤:你原来的if判断可以继续保留,用来跳过那些字段为空的记录,避免生成无效的空数据行。

之前你尝试移表头但没成功,大概率是没把整个表格的开闭合标签一起移出循环——比如如果<table>还留在循环里,哪怕表头在外,还是会每次创建新表格。现在调整结构后,就能实现所有数据在一个带单个表头的表格里展示了。

内容的提问来源于stack exchange,提问作者user8938318

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:55:05