для php стороны, давайте предположим, что вы извлекаете с помощью этого запроса то, что находится в таблице в массиве формата:
$menu = array(
'page/1' => 'about',
'page/2' => 'photos',
'menu-title' => array('page/4' => 'sub-menu-1','page/5' => 'sub-menu-2')
);
echo '<ul>';
foreach($menu as $key => $value){
if(is_string($value)){
echo '<li><a href="'.$key.'">'.$value.'</a></li>';
}
if(is_array($value)){
echo '<ul>';
echo '<li><a href="#">'.key($value).'</a></li>';
foreach($value as $sub_key => $sub_value){
echo '<li><a href="'.$sub_key .'">'.$sub_value.'</a></li>';
}
echo '</ul>';
}
}
echo '</ul>';
для mysql базы данных,иметь столбец «parent_id», если он равен NULL, то это будет корневой уровень, кроме этого, это будет подпункт там, еще один столбец «path» и «title», вы также можете добавить столбец «weight»чтобы заказать их.
ПРИМЕЧАНИЕ: это непроверенный код