Okey,所以这是我的问题。
我有一个页面结构保存到mysql数据库中。
像这样:

第1页
-子页面1.1
--子页面1.1.1
---子页面1.1.1.1
---子页面1.1.1.2
--子页面1.1.2
-子页面1.2
-子页面1.3
第2页
第3页

该结构可以具有无限的页面和子页面。所有页面都有一个名为“ url”和“ childof”的字段。 “ childof”是将页面绑定为另一个页面的子页面。

例:
第1页的“ url”第1页,“ childof”为空
子页面1.1具有“ URL”子页面1-1和“ childof”页面1
子页面1.1.1具有“ URL”子页面-1-1-1和“ childof”子页面-1-1

希望你得到基本的想法。

我的问题是进行循环处理,以将所有这些页面组合在一起。

获取第一行页面很容易;

$sql = "SELECT * FROM `page` WHERE `childof` = ''
  ORDER BY `id` DESC";
$result = mysql_query($sql);
$i=0;
while ($row = mysql_fetch_assoc($result)) {
 $pages[$i]['id'] = $row['id'];
 $i++;
}


获得第二行也很容易...

for($x=0; $x < sizeof($pages); $x++){
 $sql = "SELECT * FROM `page` WHERE `childof` = '".$pages[$x]['url']."'
   ORDER BY `id` DESC";
 $result = mysql_query($sql);
 $i=0;
 while ($row = mysql_fetch_assoc($result)) {
  $pages[$x]['children'][$i]['id'] = $row['id'];
  $i++;
 }
}


当然,我可以这样继续下去。但是,在不知道有多少个子页面的情况下这样做并不是很有效。那么,如何进行循环以将所有页面和子页面检索到结构良好的数组中?

谢谢!

最佳答案

第一个解决方案是使用递归来检索每个页面的子代。但是,当页面数变大时,这可能会导致大量查询,尤其是如果它们嵌套得很深的话。

您可能希望将this blog-entry视为一次查询即可检索所有页面,然后使用地图访问特定页面的子页面。

08-27 16:22