umpf .... non vedo la chiamata ricorsiva a me pare una funzione iterativa...
non ricorsiva...
tu carichi tutti i menu poi esegui una distinzione tra parent e children senza sperare i dati dalla struttura pincvipale.
dovresti fare 2 buffers 1 con i parent e 1 con i children.
Inoltre questa procedura si ferma al secondo livello di profondità in quanto non presenti le chiamate a se' stessa.
crea 2 nuovi metodo ... cosi' per testare
1- toHtml()
2- getMenu( $data , $level )
il metodo toHtml()
- carica i dati where id_parent==0
- converte il ris in array e passa l'array a getMenu( $roots , 0 ) ;
ol metodo getMenu($data,$level)
SE DATA != ARRAY() ==> CASO BASE => return "" ;
apre ul
scorre l'array $data
per ogni riga : esegue query di estrazione figli (come dicevo sopra where parent_id==$id)
converte le righe in array e richiama getMenu( $figli , ++$level )
concatena risultato
chiudi ul
ritorna stringa