Не самая простая задача для новичка, давай разберем по порядку что тебе надо сделать.
1) тебе надо как-то хранить список категорий и их ссылок
2) тебе надо получить структуру меню в переменную
3) тебе надо построить само меню
Я исхожу из того, что хранить информацию о меню ты будешь в базе.
Пусть в базе будет две таблицы:
menu_category
~~~~~~~
id
name
order
menu_items
~~~~~~~~~~~
id
menu_category_id
name
url
order
дальше, ты примерно вот таким запросом получаешь все пункты меню
SELECT
`c`.`id` as `id`,
`c`.`name` as `name`,
`i`.`id` as `item_id`,
`i`.`name` as `item_name`,
`i`.`url` as `item_url`
FROM `menu_category` as `c`
LEFT JOIN `menu_items` as `i` ON `i`.`menu_category_id`=`c`.`id`
ORDER BY `c`.`order`, `i`.`order`
теперь группируем результаты по id категории тем самым получая удобную структуру для формирования меню
$menu = [];
foreach ($results as $res) {
$menu[$res['id']]['name'] = $res['name'];
$menu[$res['id']]['items'][] = [
'name' => $res['item_name'],
'url' => $res['item_url'],
]
}
в результате имеем массив с такой структурой:
[1]=>[
'name' => 'Категория 1',
'items' => [
['name'=>'Ссылка 11', 'url'=>'http://site11.ru'],
['name'=>'Ссылка 12', 'url'=>'http://site12.ru'],
]
],
[2]=>[
'name' => 'Категория 2',
'items' => [
['name'=>'Ссылка 21', 'url'=>'http://site21.ru'],
['name'=>'Ссылка 22', 'url'=>'http://site22.ru'],
]
],
теперь осталось все это вывести, используем такой код
echo '<ul>';
foreach($menu as $catId=>$cat) {
echo '<li>'.$cat['name'];
if (isset($cat['items'])) {
echo '<ul>';
foreach($cat['items'] as $item) {
echo '<li><a href="'.$item['url'].'">'.$item['name'].'</a></li>';
}
echo '</ul>';
}
echo '</li>';
}
echo '</ul>';
вот и всё, осталось написать формы для добавления данных в соответствующие таблицы бд