如何将MySQL查询结果输出为3列表格而非单列
问题:将MySQL查询结果按3列表格布局展示
推荐的帖子并未解决我的问题,我已经看过那篇了,为何这么早关闭我的问题?我已经说明那些帖子对我毫无帮助!
我尝试了数十条自动推荐的类似帖子,也在谷歌上搜索了数小时。我经验不足,看到的示例不知道如何适配我的页面。
我想要实现的是:将MySQL查询结果拆分到3列表格中,每个单元格包含一条记录的所有信息,列数固定为3,行数随新增图片自动增加。
注意:请先告知我如何修改或问题所在再关闭问题或给我差评,我已经查遍类似帖子,除非有人指点否则不知道怎么解决,提前感谢!
编辑:当前内容已在表格内,但我需要将表格内的结果拆分到一个新的3列表格中。
编辑2:我需要每条数据库记录的内容显示在一个单元格里,循环生成另外2个单元格后换行,再生成下一行的3个单元格,以此类推,每条数据库记录对应一个单元格,每行3条记录。
当前代码
<div align="center"><img src="header.jpg"><br> <br> <a href="form.php" target="_blank"><font face="Verdana, Arial, Helvetica, sans-serif" color="#9999FF">CLICK HERE TO ADD YOUR SELFIE</font></a><br> <br> </div> <table width="50%" border="1" cellspacing="0" cellpadding="0" align="center"> <tr> <td> <div align="center"><font face="Verdana, Arial, Helvetica, sans-serif"><?php // Include the database configuration file include 'config.php'; // Get images from the database $query = $db->query("SELECT nameviewer, file_name FROM image ORDER BY uploaded_on DESC"); if($query->num_rows > 0){ while($row = $query->fetch_assoc()){ $nameviewer = 'uploads/'.$row["nameviewer"]; $imageURL = 'uploads/'.$row["file_name"]; ?> <a href="<?= $imageURL; ?>" target="_blank"><img src="<?= $imageURL; ?>" width="150" /></a><br> <font color='lightblue'> <b><?php echo htmlspecialchars($row["nameviewer"]); ?></b></font><br> <font size="2"><i><font color="#999999">Click The Pic To Expand</font></i></font><br> _______________<br><br> <?php }} ?> </font></div> </td> </tr> </table>
修改后的代码
<div align="center"><img src="header.jpg"><br> <br> <a href="form.php" target="_blank"><font face="Verdana, Arial, Helvetica, sans-serif" color="#9999FF">CLICK HERE TO ADD YOUR SELFIE</font></a><br> <br> </div> <table width="50%" border="1" cellspacing="0" cellpadding="0" align="center"> <?php // Include the database configuration file include 'config.php'; // Get images from the database $query = $db->query("SELECT nameviewer, file_name FROM image ORDER BY uploaded_on DESC"); if($query->num_rows > 0){ $count = 0; // 计数器,控制每行的单元格数量 while($row = $query->fetch_assoc()){ // 每3条记录开启一个新行 if($count % 3 == 0){ echo '<tr>'; } $imageURL = 'uploads/'.$row["file_name"]; ?> <td align="center" valign="top"> <font face="Verdana, Arial, Helvetica, sans-serif"> <a href="<?= $imageURL; ?>" target="_blank"><img src="<?= $imageURL; ?>" width="150" /></a><br> <font color='lightblue'><b><?= htmlspecialchars($row["nameviewer"]); ?></b></font><br> <font size="2"><i><font color="#999999">Click The Pic To Expand</font></i></font><br> _______________<br><br> </font> </td> <?php $count++; // 每3条记录关闭当前行 if($count % 3 == 0){ echo '</tr>'; } } // 处理最后一行不足3条的情况,补空单元格 $remaining = 3 - ($count % 3); if($remaining != 3){ for($i=0; $i<$remaining; $i++){ echo '<td> </td>'; } echo '</tr>'; } } ?> </table>
关键修改点
- 新增
$count计数器,跟踪已输出的记录数量,控制每行的单元格数 - 当
$count % 3 == 0时,开启新的<tr>行标签 - 将每条记录的内容独立包裹在
<td>单元格中,替代原来所有内容放在单个单元格的结构 - 每输出3条记录后,关闭当前
<tr>行标签 - 最后处理剩余不足3条的记录,补充空单元格保证表格结构完整
内容的提问来源于stack exchange,提问作者Christopher Robbins
相关产品推荐
相关产品推荐

