我的网站中有一个多级菜单和以下数据库表结构:
- section_id
- parent_id
- 节名
- section_permalink
我知道这不是最好的桌子设计:|
我想要做的是在这个菜单中获取一个部分的绝对父级(parent_id = 0 的部分)。
要检索整个树,我使用此函数:
function generate_sections_select($parent, $level, $selected) {
global $db;
$stmt = $db->prepare("SELECT * FROM sections WHERE parent_id = :parent_id AND deleted = '0'");
$stmt->bindParam(':parent_id', $parent, PDO::PARAM_INT);
$stmt->execute();
while($row = $stmt->fetch()) {
if ($selected == $row['section_id']) {
echo "<option value='".$row['section_id']."' selected>".str_repeat('-', $level).' '.$row['name_ro']."</option>\n";
} else {
echo "<option value='".$row['section_id']."'>".str_repeat('-', $level).' '.$row['name_ro']."</option>\n";
}
generate_sections_select($row['section_id'], $level+1, $selected);
}
}
例子:
- 级别 1:主页
- 2级:关于我们
- 第 3 级:我们的团队
“我们的团队”或“关于我们”的绝对父级是“主页”。