79 messaggi dal 06 aprile 2004
Salve,
mi trovo davanti un grosso problema.

Devo realizzare un menu ad albero con sottocategorie illimitate, che peschi i dati da una tabella di SqlServer.

I campi della tabella Categorie interessati sono:
1) MenuId (contatore)
2) ParentId (int)

La relazione è che se su ParentId metto (0) allora è una categoria PADRE, altrimenti se metto uno degli ID del campo MenuId allora automaticamente diventa figlio. In questo modo posso avere figli di figli INFINITI.

Il DB quindi è tutto ok.

Per la rappresentazione grafica avevo pensato ad ASP / CSS / JavaScript

L'unica difficioltà è che di JavaScript non so NULLA di NULLA.
Ho trovato uno script già fatto che però ha 2 cose che dovrei personalizzare ma non lo so fare.

Allora chiedo, è possibile realizzare tutto in puro ASP?

Se si... come faccio a ciclare Recordset annidati? O comunque, come posso fare per estrarre record in modo da comporre il menu ad albero, quindi con lo sottocategorie di sottocategorie e con il link al prodotto finale?

Grazie a chiunque mi aiuterà
Massimo
5 messaggi dal 10 aprile 2008
Ciao,
secondo me dovresti modificare l'impostazione del DB.

Devi creare una tabella PADRE con (IDMENU, DESCRIZIONE) e una tabella FIGLIO (con IDSOTTOMENU, DESCRIZIONE e IDMENU).

Il campo IDMENU della tabella FIGLIO ti consente di legarti alla riga della tabella PADRE in questo modo puoi avere non solo un padre con n figli ma anche n padri ognuno con i propri figli. Spero di essere stato chiaro...

Creare il menu in asp è così semplicissimo.

Fai due cicli do while... Loop un dentro l'altro ed il menu è bello e pronto...
79 messaggi dal 06 aprile 2004
e se devo prevedere i figli dei figli?

e figlio del figlio del figlio?

Ossia non conosco la profondità della scala gerarchica.

Quindi non posso sapere quante tabelle sottocategorie devo creare.

Come l'hai detto tu è molto semplice si... ma si ferma ad una sottocategoria.

A me ne servono N
5 messaggi dal 10 aprile 2008
Non avevo capito allora fai cosi:
TABELLA (IDMENU, DESCRIZIONE, LIVELLO)

Per ciclare con ASP:
Creati due recordset:

rs1 => SELECT livello FROM tabella

do while not rs1.EOF
rs2 => SELECT * FROM tabella WHERE livello = rs1(livello)
do while not rs2.EOF
... codice...
rs2.moveNext
loop (di rs2)
rs1.moveNext
loop (di rs1)

Penso che così vada bene o no??
79 messaggi dal 06 aprile 2004
Ti ringrazio moltissimo della tua disponibilità Reneschi... ma purtroppo devo metterti davanti ancora al probelma...

tu hai creato 2 cicli annidati... potrei farne 3... 4... è vero.

Ma io non conosco quanti cicli dovrò fargli fare perchè non conosco quanti livelli di profondità ho :-(
5 messaggi dal 10 aprile 2008
ok.. non mi arrendo...

in pratica si tratta di sapere quanti livelli diversi hai....

potresti provare con una 'SELECT DISTINCT LIVELLO FROM TABELLA'... e ciclare per il numero di volte che ti risulta da questa select...


o no???
5 messaggi dal 10 aprile 2008
Grazie a te a buon rendere

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.