Sto affrontando anche io un problema simile, solo che come puoi vedere ciò che voglio fare io è moooolto laborioso, se vuoi darci un'occhiata la discussione la trovi qua: http://forum.html.it/forum/showthrea...hreadid=746201
Per risolvere il tuo problema comunque ti basta una funzione del genere:
nome pagina prova2.php
codice:
<?
include 'connect.inc.php'; //includi il file con cui ti connetti al db
function display_children($parent, $level) {
//Seleziono tutti i figli che hanno come genitore $parent_id
$sql = "SELECT * FROM trees WHERE parent_id LIKE '".$parent."'";
$result = mysql_query($sql)or die(mysql_error());
//visualizza tutti i figli
while ($row = mysql_fetch_array($result)) {
//indentazione e visualizzazione della categoria èper ogni figlio
echo str_repeat('',$level);
print ''.$row['category'].'
';
// call this function again to display this
// child's children
display_children($row['id'], $level+1);
}
}
if (!$_GET['category'] && !$_GET['level'])
display_children(0,0);
else
display_children($_GET['category'], $_GET['level'])
?>
La funzione l'ho costruita basandomi su un db con il seguente dump:
codice:
#
# Struttura della tabella `trees`
#
CREATE TABLE trees (
id int(11) NOT NULL auto_increment,
category varchar(50) NOT NULL default '',
parent_id int(11) NOT NULL default '0',
PRIMARY KEY (id)
) TYPE=MyISAM;
#
# Dump dei dati per la tabella `trees`
#
INSERT INTO trees VALUES (1, 'pantaloni', 0);
INSERT INTO trees VALUES (2, 'velluto', 1);
INSERT INTO trees VALUES (3, 'cotone', 1);
INSERT INTO trees VALUES (4, 'pelle', 1);
INSERT INTO trees VALUES (5, 'jeans', 1);
INSERT INTO trees VALUES (6, 'levi\'s', 5);
INSERT INTO trees VALUES (7, 'ck', 5);
INSERT INTO trees VALUES (8, 'maglioni', 0);
INSERT INTO trees VALUES (9, 'di lana', 8);
INSERT INTO trees VALUES (10, 'di cotone', 8);
e basandomi sulla funzione postata qui:
http://www.sitepoint.com/article/hie...-data-database

edit -> nel codice questa riga echo str_repeat(' ',$level); al posto di metterci tre spazi mettici 3 o quanti vuoi & n b s p; scritto tutto attaccato, serve per indentare il testo.