我有一个MySQL帖子,如下所示:
| id | post | parent |
+----+--------------------------------------+--------+
| 1 | Hello world | 0 |
| 2 | response to 1 | 1 |
| 3 | response to 1 | 1 |
| 4 | new opening post | 0 |
如果帖子是开场帖,则父级设置为0.如果它是对开场帖的回复,则其父级是ID的值。我试图获取表格,打印每个开头帖子,然后打印下面的回复缩进。这是我到目前为止所做的,但它不起作用:
while ($row = mysqli_fetch_assoc($result)) {
if ($row["parent"] == 0) {
echo "" . $row["id"] . " | " . $row["post"] . "<br>"; }
while ($row2 = mysqli_fetch_assoc($result)) {
if ($row["id"] == $row2["parent"]) {
echo ">" . $row2["id"] . " | " . $row2["post"] . "<br>"; }}}
我一直在互联网上寻找一段时间的解决方案现在无济于事;我已经尝试将mysql结果放入数组中,但这也没有用。如果有人能指出我正确的方向,我真的很感激。提前谢谢!
这不是How to go through mysql result twice?的副本,因为我希望继续通过表格,而不是在每次OP后重置。
答案 0 :(得分:-1)
使用一个statment为id,post和parent创建三个数组,然后将每个行数据添加到这些数组,并使用for循环创建显示结果,就像这个代码可能有用。
$id=array();
$post=array();
$parent=array();
while ($row = mysqli_fetch_assoc($result)) {
$id[]=$row["id"];
$post[]=$row["post"];
$parent[]=$row["parent"];
}
for($i=0;$i<count($id);$i++){
if($parent[$i]==0){
echo $parent[$i];
for($j=0;$j<count($parent);$j++){
if($parent[$j]==$id[$i]){
echo $post[$j];
}
}
}