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视为一次查询即可检索所有页面,然后使用地图访问特定页面的子页面。