【发布时间】:2012-03-13 17:40:16
【问题描述】:
我的 codeigniter 项目中有两个 db 表。简而言之,
page page_lang
------------------------------------- ----------------------------
id_page | id_menu | id_parent | level id_page | title | etc..
------------------------------------- ----------------------------
1 | 1 | 0 | 0 1 | Name 1 | etc..
2 | 1 | 1 | 1 2 | Name 1.1 | etc..
3 | 1 | 2 | 2 3 | Name 1.1.1 | etc..
4 | 1 | 2 | 1 4 | Name 1.2 | etc.
我正在尝试创建一个下拉选择框,其中包含所有嵌套缩进的页面作为输出;
<option value="id_page">Name 1</option>
<option value="id_page"> » Name 1.1</option>
<option value="id_page"> - Name 1.1.1</option>
<option value="id_page"> » Name 1.2</option>
在这种情况下,需要加入 page 和 page_lang 并创建一个递归循环,我问。
但我一直致力于设计尽可能快的代码。感谢您的帮助。
【问题讨论】:
-
是的,你需要一个递归函数。将您的页面从数据库中按父级升序排序,然后您可以运行深度优先算法,该算法跟踪深度,并在页面名称前面加上深度级别的缩进。
-
策略已注明,谢谢,但我对构建递归不太满意。
标签: php mysql codeigniter join nested