Menu ricorsivo con una sola query SQL

recursion

Vediamo come creare un menu ricorsivo in php e MySQL utilizzando una sola query e un paio di funzioni ricorsive

Per realizzare un menu ricorsivo utilizzando una sola query utilizzeremo uno schema SQL comune, una tabella contents che contiene gli elementi del menu con il solo url e titolo. All’ interno della tabella definiremo solo i campi che sono necessari per gestire il menu’, ma e’ possibile estendere la tabella per gestire i contenuti, le lingue e tutto quello che vi serve per l’ implementazione che avete in mente.

Ecco il codice SQL per creare la tabella con i dati che useremo in questo esempio

A questo punto facciamo la nostra unica query che ci servira’ per realizzare tutto il menu’. La query e’ una banalissima SELECT, infatti tutto il lavoro di organizzazione del nostro menu’ verra’ svolto da un paio di funzioni ricorsive in php che si occuperanno di popolare opportunamente un array dal quale generare poi il codice html necessario a stampare il menu’.

Per organizzare il tutto mettiamo il risultato della query in un array $contents e passiamolo alla seguente funzione

E infine ripassiamo l’ array $menu a una ulteriore funzione ricorsiva che si occupera’ di generare l’ html necessario per stampare il menu’ in html.

Il menu’ e’ pronto e funzionante. A questo punto, se volete, potete approfondire in questo articolo come fare per “abbellire” ulteriormente il menu’ grazie a css, jQuery e un piccolo snippet di codice javascript.