如果MySql Output中的值通过PHP更改,则换行为HTML



这是HTML/PHP,我正在使用它来显示一些数据。

<body>
<section>
<h1>Facebook Search</h1>
<!-- TABLE CONSTRUCTION-->
<table>
<tr>
<th>Comment</th>
<th>Comment Made By</th>
<th>Commentor's Profile Link</th>
<th>Comment ID</th>
<th>Post ID</th>

</tr>
<!-- PHP CODE TO FETCH DATA FROM ROWS-->
<?php   // LOOP TILL END OF DATA 
while($rows=$result->fetch_assoc())
{
?>
<tr>
<!--FETCHING DATA FROM EACH 
ROW OF EVERY COLUMN-->
<td><?php echo $rows['comtext'];?></td>
<td><?php echo $rows['comby'];?></td>
<td><?php echo $rows['compro'];?></td>
<td><?php echo $rows['commentid'];?></td>
<td><?php echo $rows['postid'];?></td>
</tr>
<?php
}
?>
</table>
</section>
</body>

</html>

并且我正在从CCD_ 1获得这样的数据。

$sql = "SELECT comments.*, posts.postid FROM comments JOIN posts USING(postid)";
$result = $mysqli->query($sql);
$mysqli->close(); 

这将输出一个包含所有数据的表格。我的问题是,当postid的值发生变化时,有没有办法将单个表分解为多个表?就像。。x行数为1,x行数则为2,依此类推。我想在这些表之间稍作休息。

当postid的值改变时,有没有办法将单个表分解为多个表

您应该停止使用";SELECT*";,它效率低下,并且使代码难以维护。当我们在这里讨论样式时,您可以在PHP和内联HTML之间来回切换,这也会影响代码的可读性。

关于你的问题。。。

您需要确保查询的输出按postid排序,否则会得到很多表。

使用状态变量来跟踪循环上一次迭代中的postid。

$prev=0;
while($rows=$result->fetch_assoc()) {
if ($rows['postid']!=$prev) {
close_table();
open_table();
$prev=$rows['postid'];
}
output_row($rows);
}
close_table();

这样做的问题是,的每次迭代都希望您已经将<table>写入到输出流中,包括第一次迭代。您可以在循环之前执行此操作,但最终会在页面顶部出现一个空表。您可以添加另一个状态变量来跟踪是否已打开表标记。就我个人而言,我倾向于从现有状态变量的值进行推断:

$prev=0;
while($rows=$result->fetch_assoc()) {
if ($rows['postid']!=$prev) {
$prev || close_table();
open_table();
$prev=$rows['postid'];
}
output_row($rows);
}
close_table();

(写if(not(condition((do something((的快捷方式

请注意,除非您固定列的大小,否则每个表都将独立调整大小,以适应其中的数据

最新更新