Рекурсивное меню с php и 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>' 

Он работает для одной ссылки (Home), а затем выдает вызов функции-члена 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> 

Я хочу, чтобы основное меню работало, а затем работало над порядком сортировки ссылок. Если кто-то может помочь, это будет очень признательно.

Related of "Рекурсивное меню с php и MySQLi"

Задача решена! Я опубликую, как это было сделано, и кто-то сможет его использовать.

 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>'; } в 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>'; } 

}