Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    348

    Gestione categorie/sottocategorie - soluzione dinamica

    Ciao a tutti...

    Diverse volte ho avuto la necessità di gestire dei contenuti categorizzati su 2 livelli (categoria -> sottocategoria -> contenuto).

    Oggi per vari motivi devo affrontare la necessità di estendere quanto sopra ed aggiungere un livello avendo quindi una sottosottocategoria.

    Prima di iniziare mi sono chiesto: ma cavolo non è che poi tra x tempo avrò bisogno di un 4° livello e mi troverò da capo a dover sistemare il tutto? Non è forse meglio pensare ad una soluzione multilivello potenzialmente ampliabile n volte?

    Qualcuno di voi si mai trovato in questa situazione e può buttare lì qualche dritta?

    Se io mi organizzo i dati in un record come segue:

    ID | ParentID | ItemName | FileName
    1 | 0 | Livello1 |
    2 | 1 | Livello2 |
    ..................
    7 | 2 | Livello3 |
    8 | 7 | Livello4 |
    9 | 8 | Allegato1 | allegato.pdf

    Se è corretto quanto sopra da me ipotizzato in questo modo potrei teoricamente avere livelli infiniti.

    Nel caso il record contenga una categoria non avvaloro in campo FileName ed faccio dei collegamenti al record padre tramite il campo ParentID

    Fatto questo però mi sono incasinato con la query e sto impazzendo per estrarre in un colpo solo tutto i file di una specifica categoria

    Secondo voi la mia idea può andare? Qualche aiuto per estrarre i dati corretti?
    Il risultato è che l'utente scelto il livello1 si vedrà popolare la select livello2, poi livello3, poi livello4 e infine l'elenco dei documenti di quel livello...

    Grazie
    Edo

  2. #2
    secondo me devi mettere le categorie in una tabella, e i file in un'altra

    ID | ParentId | CatName per le categorie

    ID | CatID | ItemName | FileName per i file

    = infinite categorie e la possibilità di catalogare file per qualunque categoria. se ho ben capito quello che ti serve
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    Per un problema similare, in cui avevo anche la necessità di tracciare un "albero" stile esplora risorse, ho aggiunto alla mia tabella (in cui erano contenuti "padri", "figli", "nipoti", ecc) una colonna denominata Layout. In quel campo ho valorizzato delle stringhe di testo del tipo "5.12.23" cioè per ogni elemento ho riportato nell'ordine gli id dei suoi "antenati"...

    Per fare un esempio pratico:
    ID | Layout | descrizione
    1 | | Genitore
    2 | 1 | Figlio n°1
    3 | 1 | Figlio n°2
    4 | 1.3 | Nipote (figlio di Figlio n°2)
    5 | 1.3.4 | Bisnipote (sottocategoria di 1, 3, 4)...

    (spero di essere riuscito a spiegarmi...)

    Questo consente, oltre a dare la possibilità di infinite sottocategorie, di ordinare per "Layout" la query ed avere un "albero" pronto per essere disegnato.

    Il campo layout poi è facilmente interpretabile con un semplice split.

  4. #4
    io sinceramente avrei messo un campo ParentID che puntasse al padre e un campo layout a parte. Questo per consentire di mantenere la consistenza del database in campo di cancellazioni di categorie o modifiche (anche se nelle modifiche devi cmq andare a modificare in qualche modo il campo layout)
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    348
    Grazie mille ad entrambi per l'aiuto...

    Non è un'idea malvagia quella del campo layout anche se lo vedo come un campo supplementare visto che l'albero lo posso ricavare con delle select ricorsive (sapendo però a priori la "profondità" dell'albero)... concordo con Santino con il fatto che resta utile avere un campo con il "puro" riferimento al ParentID.

    Grazie proseguo con il mio lavoro

    ciao
    edo

  6. #6
    Originariamente inviato da edo72
    Grazie mille ad entrambi per l'aiuto...

    Non è un'idea malvagia quella del campo layout anche se lo vedo come un campo supplementare visto che l'albero lo posso ricavare con delle select ricorsive (sapendo però a priori la "profondità" dell'albero)... concordo con Santino con il fatto che resta utile avere un campo con il "puro" riferimento al ParentID.

    Grazie proseguo con il mio lavoro

    ciao
    edo
    non ti credere che su questo tema ne abbiamo discusso a lungo, cercando anche un algoritmo che in tempi decenti facesse la stampa dell'albero col minor carico possibile al database (tradotto, una query che riempisse un recordset disconnesso, e poi con questo recordset stampare l'albero)

    era venuto un bell'algoritmo, almeno all'epoca. chissà se lo ritrovo

    ciao e buon lavoro
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    348
    Se lo trovi mi faresti un grosso favore...

    Grazie
    Edo

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    348
    Originariamente inviato da Santino83_02
    non ti credere che su questo tema ne abbiamo discusso a lungo, cercando anche un algoritmo che in tempi decenti facesse la stampa dell'albero col minor carico possibile al database (tradotto, una query che riempisse un recordset disconnesso, e poi con questo recordset stampare l'albero)

    era venuto un bell'algoritmo, almeno all'epoca. chissà se lo ritrovo

    ciao e buon lavoro
    Ciao,

    hai trovato per caso l'algoritmo che menzionavi?
    Dopo un po' di tempo di pausa mi ritrovo a riprendere "in mano" questa cosa...

    grazie
    Edo

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    348
    Originariamente inviato da Luca Rotella
    Per un problema similare, in cui avevo anche la necessità di tracciare un "albero" stile esplora risorse, ho aggiunto alla mia tabella (in cui erano contenuti "padri", "figli", "nipoti", ecc) una colonna denominata Layout. In quel campo ho valorizzato delle stringhe di testo del tipo "5.12.23" cioè per ogni elemento ho riportato nell'ordine gli id dei suoi "antenati"...

    Per fare un esempio pratico:
    ID | Layout | descrizione
    1 | | Genitore
    2 | 1 | Figlio n°1
    3 | 1 | Figlio n°2
    4 | 1.3 | Nipote (figlio di Figlio n°2)
    5 | 1.3.4 | Bisnipote (sottocategoria di 1, 3, 4)...

    (spero di essere riuscito a spiegarmi...)

    Questo consente, oltre a dare la possibilità di infinite sottocategorie, di ordinare per "Layout" la query ed avere un "albero" pronto per essere disegnato.

    Il campo layout poi è facilmente interpretabile con un semplice split.
    Ciao,

    stavo rileggendo il post e stavo rivalutando la tua proposta per quanto riguarda il campo Layout... se la query è ordinata solo per il campo Layout di fatto devo comunque fare dei controlli ricorsivi...

    Tu che fai? Un semplice query?

    Grazie
    Edo

  10. #10
    Originariamente inviato da edo72
    Ciao,

    stavo rileggendo il post e stavo rivalutando la tua proposta per quanto riguarda il campo Layout... se la query è ordinata solo per il campo Layout di fatto devo comunque fare dei controlli ricorsivi...

    Tu che fai? Un semplice query?

    Grazie
    Edo
    Ciao,
    tamto per non riscrivere nuovamente tutto, ti linko un post in cui abbiamo ampiamente discusso sull'argomento, con confronti anche interessanti:
    Leggi Qui

    Buona lettura!
    ***************************
    Non può piovere per sempre...
    ***************************

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.