Ciao,
ho creato una tabella sql i cui campi principali sono:
- ID
- parentID
- titolo
- ...
Il campo parentID serve per associare un ID ad un'altro ID, al fine di ricavare una struttura dei contenuti ad albero. Ad es.
ID | parentID | titolo
1 0 xxx
4 0 bbb
3 1 zzz
5 1 eee
6 1 www
7 1 Nuovo
9 7 Nuovo
10 7 Nuovo
12 5 Nuovo
13 1 Nuovo
17 16 Nuovo
16 6 Nuovo
18 4 Nuovo
Darà la struttura:
(la prima cifra è il parentID: "[parentID].[titolo] id[ID]")
- 0.xxx id1
-- 1.zzz id3
-- 1.eee id5
--- 5.Nuovo id12
-- 1.www id6
--- 6.Nuovo id16
---- 16.Nuovo id17
-- 1.Nuovo id7
--- 7.Nuovo id9
--- 7.Nuovo id10
-- 1.Nuovo id13
- 0.bbb id4
-- 4.Nuovo id18
Ho evidenziato in rosso un esempio di associazione tra un ID e un partentID: chi ha il parentID=16 risulterà associato a chi ha l'ID (univoco) = 16... e così via..
Questo risultato sono riuscito a stamparlo tramite 4 query php annidate:
Codice PHP:
<?
$q=mysql_query("SELECT * FROM tree WHERE parentID='0' ORDER BY parentID ASC");
while($r=mysql_fetch_array($q)){
echo "- ".$r[parentID].".".$r[titolo]." id".$r[ID]."
";
$q2=mysql_query("SELECT * FROM tree WHERE parentID='$r[ID]' ORDER BY parentID ASC");
while($r2=mysql_fetch_array($q2)){
echo "-- ".$r2[parentID].".".$r2[titolo]." id".$r2[ID]."
";
$q3=mysql_query("SELECT * FROM tree WHERE parentID='$r2[ID]' ORDER BY parentID ASC");
while($r3=mysql_fetch_array($q3)){
echo "--- ".$r3[parentID].".".$r3[titolo]." id".$r3[ID]."
";
$q4=mysql_query("SELECT * FROM tree WHERE parentID='$r3[ID]' ORDER BY parentID ASC");
while($r4=mysql_fetch_array($q4)){
echo "---- ".$r4[parentID].".".$r4[titolo]." id".$r4[ID]."
";
}#while
}#while
}#while
}#while
?>
Ma è un procedimento macchinoso e non va bene se i livelli della struttura aumentano o se elimino dal db un ID genitore.
Sto cercando quindi un codice per ricavare dalla lettura del db l'albero in modo ricorsivo.
Mi stava venendo in mente di usare gli array multidimensionali ma non riesco ad arrivare da nessuna parte.
Qualcuno ha qualche idea o ha già visto un codice simile da qualche parte?
Se non mi sono fatto capire, provo a rispiegarvi.
Grazie raga,
confido in voi !