使用php循环遍历递归数据库表

时间:2013-11-15 11:21:30

标签: php mysql recursion

我们的想法是将所有网页数据(标题,描述,开放图标等)保存到数据库表中。当然,有些页面应该是其他页面的子页面。例如,应该有"营销"和"摄影"在"服务"。

为简化起见,我们假设表格如下:

  • webpageId
  • 标题
  • parentWebpageId

我需要找到一种方法来遍历所有这些数据,并使用PHP打印HTML列表:

<ul>
    <li>home</li>
    <li>
        services
        <ul>
            <li>marketing</ul>
            <li>photography</ul>
        </ul>
    </li>
</ul>

我试图构建一个应该可重用的系统,并且无法知道递归的深度,所以我需要一种方法来始终确保我检查了所有内容。

在彼此内部使用foreach循环似乎不是最佳解决方案。

提前致谢。

1 个答案:

答案 0 :(得分:1)

基本上,您正在处理分层数据。递归(或多个循环内的多个循环)不是解决方案,因为您不希望运行无数的SQL查询,只是为了显示导航列表。如果查看this article,您会发现有两种方法/结构可供使用。 Adjacency List ModelNested Set Model

Nested Set Model看起来像这样:

enter image description here

有问题的文章有很多可以查看和使用的示例查询。

相关问题