You need to enable JavaScript to run this app. 如何借助取模(%)运算符实现PHP读取的数据库记录3列水平展示
优惠活动
大模型
产品
解决方案
定价
更多

如何借助取模(%)运算符实现PHP读取的数据库记录3列水平展示

3列水平图书布局实现修正

原有代码的核心问题

  • 取模逻辑使用错位:仅用取模计算了11 % 3 = 2作为循环初始值,从未将取模运算用在“按列拆分、按行分组”的核心布局判断上,没有达到任务要求的取模使用场景
  • 循环逻辑异常:初始值$i为2,while判断仅校验$i的真假值,每轮循环仅对$i做自增,没有做任何行/列的分组控制
  • 表格结构不符合3列要求:每一条图书记录单独包裹在一个独立的<tr>行中,每个表格行仅包含1个<td>单元格,无论循环跑满多少条记录,最终都会渲染为垂直单列排布,无法实现3列水平并排的效果

符合任务要求的修正实现

核心逻辑强制使用%取模运算符完成布局判断:

  • 维护图书遍历计数器$bookIndex,每读取一条图书记录计数器自增1
  • 当计数器对固定列数取模结果为0时,判定为新一行的起始位置,开启<tr>标签
  • 当计数器对固定列数取模结果为列数-1时,判定为当前行已经凑满3个单元格,闭合</tr>标签
  • 遍历完成后,对最后不满3个单元格的尾行做标签补全,避免HTML结构错乱
<?php
include_once('config.php');
$result = mysqli_query($mysqli, "SELECT * FROM books ORDER BY id ASC");
// 定义固定列数
$columnCount = 3;
$bookIndex = 0; // 图书遍历计数器
?>

<style>
img {
border: 1px solid #ddd;
border-radius: 4px;
padding: 5px;
width: 200px;
}

.p2 {
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
padding-left: 10px;
}

.p3 {
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
padding-left: 10px;
color: blue;
}
/* 补充表格基础排版样式 */
table {
width: 100%;
border-spacing: 15px;
}
td {
width: 33%;
vertical-align: top;
}
</style>

<div class="container">
    <center>
        <h1>Koleksi Buku Peribadi</h1>
        <table>
            <?php
            while($book = mysqli_fetch_array($result)) {
                // 取模判断:到达新行起始位置,开启表格行
                if($bookIndex % $columnCount == 0) {
                    echo '<tr>';
                }
            ?>
                <td>
                    <img src="Gambar-buku/<?php echo $book['picture'];?>">
                    <p class='p2'>Penulis:<span class='p3'> <?php echo $book['author'];?> </span>
                    <br> <i><?php echo $book['category'];?></i>
                    </p> 
                    <center><button type="button">Details</button> </center>                                 
                </td>  
            <?php
                // 取模判断:当前行凑满3个单元格,闭合表格行
                if($bookIndex % $columnCount == $columnCount - 1) {
                    echo '</tr>';
                }
                $bookIndex++;
            }
            // 取模判断:最后一行不满3个单元格,补全闭合标签
            if($bookIndex % $columnCount != 0) {
                echo '</tr>';
            }
            ?>                         
        </table>
    </center>
</div>

实际效果验证

针对11条图书记录的场景,布局逻辑计算结果为:

  • 前9条图书记录,每3条为一组生成3个满3列的表格行,实现水平并排效果
  • 剩余2条图书记录放在最后一行,标签结构完整无错乱
  • 所有布局分组判断均通过%取模运算符完成,完全符合任务硬性要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.10 09:45:01