Questa è una funzione ricorsiva che avevo fatto per un mio vecchio menu; guarda se puoi trarne qualche spunto utile.
Codice PHP:
/* La funzione struttura_menu_all (cerca_figli è una funzione di ausilio)
* restituisce un array contenente tutta la struttura del menu a partire dalla
* radice scelta ed ordinandolo automaticamente, indipendentemente dall'ordine
* di inserimento nel database.
* La struttura della tabella deve contenere un campo $id_main e un campo Padre.
*/
function cerca_figli($table_name, $id_main, $id_corrente) {
static $array_statico;
$query = "SELECT $id_main FROM $table_name WHERE Padre=$id_corrente";
$res = mysql_query($query);
while($riga = mysql_fetch_array($res)){
$id_main_act = $riga[$id_main];
if (!foglia($table_name, $id_main_act)) {
$pos = count($array_statico) + 2;
$array_statico[$pos] = $id_main_act;
//echo"ARRAY[$pos] = $id_main_act
";
cerca_figli($table_name, $id_main, $id_main_act);
}
else {
$pos = count($array_statico) + 2;
$array_statico[$pos] = $id_main_act;
//echo"ARRAY[$pos] = $id_main_act
";
}
}
return($array_statico);
}