Newsgroup: it.lavoro.professioni.webmaster
Titolo: gestire un sistema di categorie/subcategorie in Php+MySql.

Salve,
dovrei gestire un sistema di categorie/subcategorie in Php+MySql. Al
momento con il caldo non mi viene in mente niente che possa aiutarmi; sto
sviluppando un sistema per la gestione di un newsmagazine online, ed avrei
bisogno di associare ad ogni articolo una categoria o una sottocategoria,
con un livello indefinito di subcategorie per ogni categoria. Ho letto
qualcosa su qualche rivista, ma non so in quale, ora non ricordo. Ho
provato a ricercare in rete, ma non ho trovato niente. Qualcono ha già
sottomano qualcosa che possa essermi d'aiuto? Spero di non essere OT, ma
ho chiesto su it.alt.www.php senza alcun risultato pratico.
Francesco

 con un livello indefinito di subcategorie per ogni categoria. 
Parti da 0? non ti conviene buttarti su un cms?
Se invece vuoi proprio reinventarti la ruota, almeno copiala da chi già
l'ha fatta funzionare, spulciati qualche cms open source e vedi come è
stata risolta la cosa. Gestione di categorie e sottocategorie c'è ovunque.
Ciao
francesco

 Gestione di categorie e sottocategorie c'è ovunque.
Mi interessava sapere dove andare a cercare. Ma non avevo tempo di
spulciarmi tutto il codice di un CMS.
Francesco

 che non scrivere da zero la mia applicazione. 
Ok, ho capito la situazione.
Se ne parla spesso in molti NG, quindi cercando tra i vecchi post trovi
molta roba, mi sono ricordato di un vecchio post sull'argomento e sono
riuscito a trovarlo, c'erano alcuni link interessanti che ti copio incollo
http://www.sitepoint.com/article/1105
http://www.intelligententerprise.com/001020/celko1_1.shtml
http://www.dbmsmag.com/9603d06.html
http://www.sqlteam.com/item.asp?ItemID=8866
 
Ci trovi diverse informazioni sulle strutture gerarchiche nei DB, poi che
siano menu di navigazione o categorie sottocategorie fa poca importanza.
Non mi ricordo se ci fossero anche degli stralci di codice e se fossero
più teorici, cmq poi il codice php di contorno non dovrebbe essere un
problema.
Spero che ti siano utili.
Ciao
Francesco

 
Grazie, sei stato gentilissimo. Ora vado a leggermi le pagine che mi hai
segnalato.
Francesco

 con un livello indefinito di subcategorie per ogni categoria. Ho letto
be', è una domanda un po' generica, una cosa del genere la si può
realizzare con qualsiasi linguaggio interfacciato a qualsiasi database,
quindi ti darei delle indicazioni altrettaanto generiche partendo da
come ho fatto una cosa del genere con vbscript/access.
ho creato una tabella Categorie, i cui campi erano l'id numerico
univoco della categoria, l'id della eventuale categoria genitrice (null
se era di primo livello), un campo numerico per ordinare le categorie
figlie della stessa genitrice e ovviamente il nome della categoria.
per fare prima a creare materialmente il menu ad albero, ho messo un
campo numerico che indicava l'ordine "visuale" verticale
indipendentemente da ogni considerazione gerarchica, e un altro che
indicava il "rango" della categoria, ossia quante generazioni aveva
alle spalle.
in questo modo, invece di incartare il server con funzioni ricorsive
tutte le volte che la pagina veniva richiesta dal client, usavo le
funzioni stesse solo le pochissime volte che l'elenco delle categorie
veniva modificato.
ovviamente la ricorsività serviva a generare l'albero con
l'ordinamento richiesto.
per fare un esempio pratico (vedilo con un font a spaziatura fissa),
potresti avere una tabella del genere:
idCat ParentId Categoria  Ordine OrdineMenu Livello
1     0        Lazio      1      1          0
4     1        RM         1      2          1
11    4        Roma       1      3          2
9     4        Frascati   2      4          2
10    4        Velletri   3      5          2
5     1        VT         2      6          1
2     0        Lombardia  2      7          0
6     2        MI         1      8          1
7     3        BG         2      9          1
3     0        Toscana    3     10          0
8     3        FI         1     11          1
che ti potrebbe facilmente generare un menu del genere:
+-Lazio
| +-RM
| | +-Roma
| | +-Frascati
| | +-velletri
| +-VT
+-Lombardia
| +-MI
| +-BG
+-Toscana
  +_FI
basta scorrere la tabella ordinandola per il campo OrdineMenu e
"spostando a destra" per tante volte quanto è il valore del campo
Livello.
quando si modificano nel backend le categorie (azione infrequente) si
aggiornano adeguatamente i valori dei campi OrdineMenu e Livello.
per il resto ora sono un po' stanco e un esempio generico di funzione
ricorsiva non mi viene.