[英]Recursive menu with php and MySQLi
我有以下代码:
function menu($parent, $level){
global $dbc;
$result = $dbc->prepare('SELECT linktext, visible, sort FROM content WHERE parent =? ORDER BY sort');
$result->bind_param('s', $parent);
$result->execute();
$result->bind_result($menu_linktext, $menu_visible, $menu_sort);
$total_records = $result->num_rows;
if($level > 0 && $total_records > 0){
echo '<ul>';
}
while($row = $result->fetch()){
echo "<li>";
echo '<a href="?page=' . $menu_linktext . '">' . $menu_linktext . '</a>'.$id;
//display this level's children
menu($id, $level+1);
echo "</li>\n";
}
if($level > 0 && $total_records > 0){
echo '</ul>';
}
}
echo '<ul>' . menu(0,0) . '</ul>'
它适用于一个链接(主页),然后在非对象错误时抛出对成员函数bind_param()的调用。
该表的基础是:
page | linktext | visable | parent | sort
1 Home 1 0 1
2 Gallery 1 0 3
3 About Us 1 0 2
4 Contact Us 1 0 5
5 Services 1 0 4
6 Diving 0 5 1
7 Angling 0 5 2
8 Charters 0 5 3
这是HTML结构:
<ul class="sf-menu" id="nav">
<li><a href="index.html">Home</a></li>
<li><a href="about.html">Examples</a></li>
<li><a href="gallery.html">A Page</a></li>
<li><a href="#">Services</a>
<ul>
<li><a href="#">Diving</a></li>
<li><a href="#">Angling</a>
<li><a href="#">Charter</a></li>
</ul>
</li>
<li><a href="contact.html">Contact Us</a></li>
</ul>
我想让基本菜单正常工作,然后按链接的排序顺序工作。如果有人可以帮助,将不胜感激。
问题解决了! 我将发布它是如何完成的,也许有人可以使用它。
function menu()
{
global $dbc;
$result = $dbc->prepare('SELECT page, linktext, visable, parent FROM content WHERE visable > 0 ORDER BY parent,sort ASC');
$result->execute();
$result->bind_result($menu_page, $menu_linktext, $menu_visible, $menu_parent);
while($result->fetch())
{
if($menu_parent == 0) $menu[$menu_page]=$menu_linktext;
elseif(!empty($menu[$menu_parent])) $sub[$menu_parent][]=$menu_linktext;
}
$result->close();
if(!empty($menu))
{
echo '<ul class="sf-menu" id="nav">';
foreach($menu as $page=>$link)
{
echo "<li><a href='$link'>$link</a>";
if(!empty($sub[$page]))
{
echo '<ul>';
foreach($sub[$page] as $lnk) echo "<li><a href='$lnk'>$lnk</a></li>";
echo '</ul>';
}
echo '</li>';
}
echo '</ul>';
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.