Struttura ad albero dinamica con PHP/MySQL (I Parte)

In questo articolo tratteremo come implementare una struttura dati ad albero che viene memorizzata in un database mysql. In questa prima parte vedremo come creare in maniera bruta l'albero nela seconda parte definiremo le funzioni che ci serviranno per gestirlo.

Il codice sql per creare la tabella è:

CREATE TABLE `struttura` (
`id` int(11) NOT NULL auto_increment,
`nodo` varchar(15) NOT NULL default '',
`livello` varchar(5) NOT NULL default '',
`nodoliv` varchar(10) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM;

Dove "nodo" rappresenta il nostro nodo, "livello" indica il numero di nodi che il nostro nodo dista dal nodo padre."nodoliv" indica il padre del "nodo".Creiamo il primo figlio del nostro albero:

...
$risultato =mysql_query("insert into struttura(nodo,livello,nodoliv) values('radice','1','figlio1')");
...

Adesso procediamo con l'inserimento degli altri figli

...
$risultato =mysql_query("insert into struttura(nodo,livello,nodoliv) values('radice','1','figlio2')");
$risultato =mysql_query("insert into struttura(nodo,livello,nodoliv) values('radice','1','figlio3')");
...
$risultato =mysql_query("insert into struttura(nodo,livello,nodoliv) values('radice','1','figlion')");
...


Adesso aggiungiamo un figlio "figlio1_1" al nodo "figlio1" questo sarà al livello 1 di "figlio1" e al livello 2 di "radice".

...
$risultato =mysql_query("insert into struttura(nodo,livello,nodoliv) values('figlio1','1','figlio1_1')");
$risultato =mysql_query("insert into struttura(nodo,livello,nodoliv) values('radice','2','figlio1_1')");
...


Se ad esempio volessimo aggiungere un figlio a "figlio1_1" di nome "figlio1_11" , allora avremmo:

...
$risultato =mysql_query("insert into struttura(nodo,livello,nodoliv) values('figlio1_1','1','figlio1_11')");
$risultato =mysql_query("insert into struttura(nodo,livello,nodoliv) values('figlio1','2','figlio1_11')");
$risultato =mysql_query("insert into struttura(nodo,livello,nodoliv) values('radice','3','figlio1_11')");
...


 

 



Ti potrebbe interessare anche

commenta la notizia

C'è 1 commento
Sara
Hai dubbi su questo articolo?