prosiłbym jakieś mądre umysły o pomoc, tudzież wskazanie rozwiązania mojego małego problemu

Zastanawiam się jak zrobić od strony programowej zmianę kolejności wyświetlania menu. Mam w swoim systemie możliwość dodawania 5-cio poziomowego menu czyli:
level0
level1
level2
level3
level4
ale może też to wyglądać tak:
level0
level1
level2
level1
level0
level0
level1
level2
level3
etc

problem w tym że kompletnie nie mam pomysłu jak zrobić sortowanie tego wszystkiego. Obok każdej pozycji zrobię strzałki w górę i w dół (jeśli będzie więcej niż 1 pozycja na danym poziomie co będzie świadczyło o zmianie sortowania. Tylko co później ?
Mogę sprawdzać order_id (przykładowa nazwa liczby porządkowej) jednej pozycji przed i po i ewentualnie je zmienić ale co jak będzie tych pozycji więcej ?
np.
Chcę aby z level0 pozycja 5 przeszła na 1 i wtedy sprawdzam czy jest już 1 jak tak to zmieniam ją na 2 ale jeśli będzie już 2'ka ? to będą 2 ? ale za to jak zwiększę każdą kolejną o +1 a będzie jakiś brak między np. 1 2 4 5 6 8 to po zmianie będzie to wyglądało 1 2 3 5 7 9 ? Co robić aby takiego nieładu uniknąć ? I jak sortować levele1-4 ?
Mam nadzieję że jasno opisałem swój problem

Edit:
Niestety wcięcia w menu się nie zrobiły i brzydko to wygląda

I jak nikt nie ma pomysłu ? Jak to wygląda w znanych CMS'ach od strony programowej ?