|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Apr 2002
Città: Ariccia (Roma)
Messaggi: 1353
|
[php] Creare un menu a livelli
Salve,
ho un problema che non riesco a risolvere: devo creare un menu con diversi sottolivelli di cui non conosco a priori il numero e non conosco nemmeno l'ordine con il quale verranno creati. Ho creato una tabella nel database mySql che contiene questo: ID_Livello (Chiave primaria atuo-incrementata) N_Livello (indica la profondità del livello) ID_Liv_Precedente (L'id del livello precedente) Nome_Livello In pratica: voglio un menu così composto A ----> C -----> E ----> D B ----> F Questo menu ha 2 elementi principali A e B. C e D sono sottomenu di A ed E è sottomenu di C Nella mia tabella avrei una cosa del genere: ID NOME LIVELLO ID_LIV_PREC 1 A 0 0 2 B 0 0 3 C 1 1 4 D 1 1 5 E 2 3 6 F 1 2 Devo (e non ci riesco) provvedere a creare un menu cliccabile nel quale clicco e si espande un livello che eventualmente posso ancora cliccare e mi mostrerà i suoi livelli sottostanti.... Potete aiutarmi... non riesco a cavare un ragno dal database.... Grazie
__________________
MacBook Pro Retina 15" 2.3Ghz 16 GB Ram SSD 512 GB |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2009
Città: Varese
Messaggi: 307
|
ma non sarebbe più efficiente una struttura del seguente tipo?
id, nome, padre id come nel tuo esempio rimane un int autoincrement >0 nome è un semplice varchar padre è il riferimento all'id superiore in questo modo gestisci il tutto come fosse un albero e con una piccola funzione ricorsiva se padre==0 allora è il primo livello, la radice, altrimenti lo devi attaccare al padre e così via |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Apr 2002
Città: Ariccia (Roma)
Messaggi: 1353
|
Si, mi pare meglio... allora correggo la tabella che diventa
ID Nome ID_Padre e poi ???
__________________
MacBook Pro Retina 15" 2.3Ghz 16 GB Ram SSD 512 GB |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Oct 2009
Città: Varese
Messaggi: 307
|
e poi...
e poi crei una funzione che ti genera il menu partendo da un certo punto, all'inizio sarà 0, la radice dell'albero. puoi usare una funzione così: Codice PHP:
menu('0'); ho dovuto sfoltire una funzione che mi ero creato per un mio progetto quindi può darsi che così com'è on funzioni e dia qualche errore, prova a controllare, al massimo fai sapere |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:44.



















