alcune classi ??? ... la classe e' una sola e la sto scrivendo io, sfido che la conosciOriginariamente inviato da 13manuel84
Ti chiedo scusa, ma mi sto un attimo perdendo. Il codice php che hai postato 2messaggi sopra serve ancora o no?poi ci sarebbe che non riesco a capire cosa fa quel codice, fa utilizzo di alcune classi che non conosco e non so cosa elaborano.
il codice e' il risultato , in un array generato automaticamente dalla classe, del tuo albero , qualunque esso sia e come puoi notare se ne frega che un ramo abbia 4 livelli oppure 1, l' array rispecchia la gerarchia dell' albero ed e' strutturato come avevamo detto, ovvero rami indipendenti per foglie indipendenti.Originariamente inviato da 13manuel84
Mentre il codice che hai postato qui sopra?la query la devo sostituire alla mia?come viene generata?perché tutti quegli underscore?li mette il forum?la query è valida per la struttura del database che abbiamo visto all'inizio?
Gli underscores sono per le tabelle "fantasma" che crea la classe, sono i rami, o livelli, che possono andare da 1 a 1000 o anche piu', sta alla potenza del PC dopo supportare una grande mole di dati ... tu non ti devi preoccupare di niente, ogni livello o ramo avra' un nome ed una descrizione, non credo serva altro per il ramo .... quello che serve poi e' la singola foglia, ma per ogni fine del ramo avrai tutti i dati in tabella per ogni foglia trovata di quel ramo, unico inconveniente , come ti avevo detto, e' che i dati saranno in rows e non in associativi ( ma ti basta mappare un solo array o fare una funzione a parte che ri prendi i dati che ti servono da questo array albero ... ).
La gestione di quella tabella e' semi automatizzata, semi perche' in area amministrazione dovrai fare dei constrolli, se in db non c'e' niente e di punto in bianco vuoi il ramo 'PIPPO' sotto 'PLUTO' e 'PAPERINO' devi settare tu il livello a 3, poi crei , con il nuovo metodo:
$dbtree->addSubLevel( NULL, 'PIPPO', 'Ramo Pippo' );
$dbtree->addSubLevel( 'PIPPO', 'PLUTO', 'Ramo Pluto di Pippo' );
$dbtree->addSubLevel( Array( 'PIPPO', 'PLUTO' ), 'PAPERINO', 'Ramo Paperino di Pluto che e' ramo di Pippo' );
Quando vorrai indicizzare una foglia nel campo parent_id, che dovra' essere di varchar(255) ( o anche TEXT ma varchar ti garantisce fino a 50 livelli o forse piu' ... ), unico vincolo per la tua tabella foglie, avrai a disposizione un metodo della classe che mappera' in automatico il percorso, sempre che lo trova ( per ogni operazione la classe restituisce false se non e' stata in grado di fare cio' che hai richiesto ... )
Esempio:
'INSERT INTO foglie VALUES ( "", "'.$dbtree->getNode( 'PIPPO', 'PLUTO', 'PAPERINO' ).'", "Descrizione Foglia", "altro valore", "altro ancora", "quello che ti pare", ... etc etc ... )'
Fondamentalmente la parte che devi curare MOLTO BENE e' quella di gestione / amministrazione delle foglie, dei rami e dei sotto - menu' ... la quale sara' relativamente complessa o lenta ( mai sopra 0.1 di risultato per tutte le operazioni che ho tentato ) mentre per gli utenti che navigheranno il sito userai un solo metodo della classe:Originariamente inviato da 13manuel84
Scusami se ti faccio così tante domande e se ci capisco poco, ma se non capisco all'inizio i vari passaggi sarà dura che riesca ad implementare una funzione del genere.
Grazie mille!![]()
$dbtree->getArray( 'foglie' );
il quale restituira' false se qualcosa non e' andato bene, ma questo e' quasi impossibile se gestisci bene l' area di amministrazione, altrimenti restituira' l' array che ti ho mostrato sopra ... quello mappato con tutti i rami, categorie e informazioni sulle foglie di ogni ramo.
Quando hai un array cosi', hai tutta la liberta' di gestirtelo come ti pare, ricorda che oltre ad essere mappato ha degli indici che se impostati in get o post ti possono far vedere l' albero come caolo ti pare ...
Questo non so se e' quello che cercavi, a me questa cosa sta piacendo parecchio e se non ti serve mi spiace ma per quel che mi riguarda e' la soluzione definitiva a tutti i miei problemi di gestione menu' , sottomenu', gerarchie o altro .. almeno finche' non mi accorgo che qualcosa non puo' andare o non rispetta cio' che deve rispettare, la gerarchia.
Dimenticavo:
totale query per visualizzazione albero nell' array: 2
di cui 1 rapidissima per la sola lettura dei livelli, e l' altra unica per avere tutta la gerarchia
I tempi li sto ottimizzando, l'ultimo array visualizzato l' ha creato in 0.004491 ... ed ha un elemento in piu' rispetto quelli mostrati prima![]()