Newsgroup: it.comp.www.asp
Titolo: Problema: gestione ottimale di una gerarchia

Ciao a tutti,
devo creare un sito contenente argomenti nidificati in categorie e
sottocategorie (come i link degli argomenti di qualsiasi motore di ricerca,
per intenderci). Non vorrei utilizzare pagine html con collegamenti
'statici', perche' se dovessi in seguito modificare la struttura gerarchica
degli argomenti dovrei riscrivere il codice delle pagine :-(
Io avrei pensato ad una struttura tipo 'lista con doppi indici', im modo che
per aggiungere (o eliminare) una sottocategoria mi basta scivere la nuova
voce (eliminare la vecchia voce) e modificare due indici :-)
Ma come posso implementarla? Accetto qualsiasi altro vostra soluzione.
Grazie in anticipo
Andrea

 wrote:

Io studierei il database con due tabelle:
Categorie e Voci
Categorie:
IDCategoria
Descrizione
IDSuperCategoria
Voci:
IDCategoria
Descrizione.
Dove IDSuperCategoria puo' puntare ad una Categoria. In questo modo
hai la possibilita' di strutturare il tuo albero come ti pare.
Le categorie che sono prive di SuperCategoria sono le "radici"
dell'albero.
Davide


Usa 3 tabelle:
una contenente i nomi delle categorie in un campo 'nomecategoria'
una contenente i nomi delle sottocategorie in un campo 'nomesottocategoria' e un
campo 'categoriapadre'
una contenente gli articoli (o gli argomenti o i link, o quello che ti serve) in
un campo
articoli e un campo 'sottocategoriapadre'.
In 'categoriapadre' metterai il nome della categoria padre (di appartenenza)
In 'sottocategoriapadre' il nome della sottocategoria padre di appartenenza.
Poi se devi mostrare tutte le sottocategorie appartenenti alla categoria 'x'
fai una select su sottocategorie, con * WHERE categoriapadre='x'
Per mostrare tutti gli articoli compresi nella sottocategoria 'y' fai
la select su articoli, con * WHERE sottocategoriapadre='y'.
Diverso, e ben piu complicato, è il caso in cui vuoi un numero
non limitato di livelli gerarchici.
Ciao,
Maurizio

Ho avuto il tuo stesso problema e l'ho risolto con una sola tabella
ottenendo infinite sottocategorie. La tabella ha 3 campi (+ eventuali altri
campi di identificazione degli argomenti correlati):
1. MenuID
2. MenuDescrizione
3. MenuPadre
Con MenuPadre=0 identifichi gli argomenti del menu che dovranno comparire
sulla HomePage e poi abbini per le sottocategorie l'ID del MenuPadre ai
MenuFigli.
Quando dovrai far comparire le relativi sottocategorie passi come argomento
l'ID del MenuPadre e lo poni come argomento di ricerca nel "WHERE
MenuPadre=" della stringa SQL per la visualizzazione delle voci di menu di
quella categoria.
Spero di essere stato abbastanza chiaro nella spiegazione ;-)
Ciao.


Ottime le idee dei DB ma le paghi in termini di prestazioni.
Io ho fatto un programma che rigenera le pagine del mio sito a partire da un
DB con la struttura che i vari amici hanno definito.
Cioe' genero dinamicamente un file txt che contiene il codice html delle
pagine.... be' in effetti quando aggiungo dei link devo rigenerare, pero'
senza toccare una riga di codice, il sito vola e non ho problemi di DB.
Se ti interessa l'esempio il mio sito e' 
http://www.unsito.it
Ciao
Emiliano

 ricerca, per intenderci).


8lh2rg$fq3$1...@pluto.sm.dsi.unimi.it...
 > Ciao a tutti,
 > devo creare un sito contenente argomenti nidificati in categorie e
 > sottocategorie (come i link degli argomenti di qualsiasi motore di
 ricerca,
 > per intenderci). Non vorrei utilizzare pagine html con collegamenti
 > 'statici', perche' se dovessi in seguito modificare la struttura
 gerarchica
 > degli argomenti dovrei riscrivere il codice delle pagine :-(
 >
 > Io avrei pensato ad una struttura tipo 'lista con doppi indici', im modo
 che
 > per aggiungere (o eliminare) una sottocategoria mi basta scivere la nuova
 > voce (eliminare la vecchia voce) e modificare due indici :-)
 > Ma come posso implementarla? Accetto qualsiasi altro vostra soluzione.
 >
 > Grazie in anticipo
 >
 > Andrea
 >
 >

 wrote in message
YJ_e5.31247$sE5.3...@news.infostrada.it...


 wrote:
Di primo acchito, mi sembra che la soluzione piu' pulita sia con una
sola tabella con questi campi:
Codice , CodicePadre (vuoto se e' la radice), altri campi informazione
: come minimo, direi, AnchorContent e AnchorUrl, ma non sarebbe male
anche l'AnchorTitle (quell'attributo dell'elemento <A> che visualizza
una stringa descrittiva al passaggio del mouse).
Ciao!