请考虑以下表格结构:
+----+-----------+--------+
| id | page_name | parent |
+----+-----------+--------+
| 1 | Page 1 | 0 |
+----+-----------+--------+
| 2 | Page 2 | 1 |
+----+-----------+--------+
| 3 | Page 3 | 2 |
+----+-----------+--------+
| 4 | Page 4 | 1 |
+----+-----------+--------+
我希望遍历每个页面,在我们沿着树走下去缩进它们。问题是养育水平没有限制(即任何一个页面都可以有孩子)。我想将它们输出到<select>
元素,如下所示:
Page 1
Page 2
Page 3
Page 4
我在Page类中有两个函数,一个是HasChildren()
,另一个是FetchChildren()
。这就是我的想法,但它只输出第一级子页面:
while($record = $result->fetch_object())
{
$page = new self($record->id);
$selected = ($page->id == $selectedVal) ? ' selected="selected"' : '';
$select.= '<option value="'. $page->id .'"'. $selected .'>'. $page->name .'</option>';
$i = 1;
$child = $page;
while($child->HasChildren($active))
{
$indentString= ' - ';
for($j = 1; $j <= $i; $j++) { $indentString = ' '.$indentString; }
foreach($child->FetchChildren($active) as $child_child)
{
$selected = ($child_child->id == $selectedVal) ? ' selected="selected"' : '';
$select.= '<option value="'. $child_child->id .'"'. $selected .'>'. $indentString.$child_child->name .'</option>';
$child = $child_child;
}
$i++;
}
}
有人能指出我正确的方向吗?这是漫长的一天,所以我可能错过了一些非常明显的事情。