最近我写了一个递归的PHP函数,它可以像这样基于父子结构生成网站导航
<ul>
<li>parent
<li>child</li>
</li>
</ul>
代码看起来像这样
function generateMenu($parent, $level, $db){
$q = $db->query("select id, name FROM menu WHERE parent = '$parent'");
if($level > 0 && $q->num_rows > 0) echo "\n<ul>\n";
while($row=$q->fetch_object()){
echo "<li>";
echo '<a href="?page=' .$page. '">' . $row->name . '</a>';
//display this level's children
generateMenu($row->id, $level++, $menu, $db);
echo "</li>\n\n";
}
if($level > 0 && $q->num_rows > 0) echo "</ul>\n";
}
上面的这段代码简单地回应了<ul><li>
。来自 db 表的结构(如上面的示例)。
现在的问题是,如何创建像本网站那样的导航菜单?
请查看左侧边栏。
http://www.smithsdetection.com/continuous_vapour_sampling.php
现在我认为:
- 首先我们需要回应所有家长
- 函数必须获取当前页面 ID 作为输入值(例如 $current)
- 功能必须回显到“当前页面级别”
我不知道如何修改我的函数,以获得与给定网站一样的输出。请帮忙。
顺便说一下
我的数据库表看起来像那样
注意请不要发布有关 sql 注入(inject)漏洞的答案,我已经注意了它们:检查 in_array(如果变量列在列名数组中)并通过 real_escape。
最佳答案
看看这个:http://www.ferdychristant.com/blog/archive/DOMM-7QJPM7
您应该尝试使用一个查询获取整个层次结构以解决性能问题。
关于php - MySQL DB 驱动的菜单生成器函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7687110/