Tieni, molto rozzo ma fa al caso tuo:
Codice PHP:
<?php
$connessione = mysql_connect("server", "user", "password") or die("Connessione non riuscita: " . mysql_error());
mysql_select_db('test',$connessione);
$result = mysql_query("select id,nome from albero where padre=0",$connessione);
// Check result
// This shows the actual query sent to MySQL, and the error. Useful for debugging.
if (!$result) {
$message = 'Invalid query: ' . mysql_error() . "\n";
$message .= 'Whole query: ' . $query;
die($message);
}
while ($row = mysql_fetch_assoc($result)) {
echo($row['nome']."
");
StampaFiglio($row['id'],1);
}
mysql_free_result($result);
mysql_close($connessione);
function StampaFiglio($idPadre,$Rientro){
$connessione = mysql_connect("server", "user", "password") or die("Connessione non riuscita: " . mysql_error());
mysql_select_db('test',$connessione);
$result = mysql_query("select id,nome from albero where padre=".$idPadre,$connessione);
// Check result
// This shows the actual query sent to MySQL, and the error. Useful for debugging.
if (!$result) {
$message = 'Invalid query: ' . mysql_error() . "\n";
$message .= 'Whole query: ' . $query;
die($message);
}
while ($row = mysql_fetch_assoc($result)) {
echo(str_repeat("-",$Rientro)." ".$row['nome']."
");
StampaFiglio($row['id'],$Rientro+1);
}
mysql_free_result($result);
mysql_close($connessione);
}
?>
Presuppone che esista la tabella albero nel db test e che sia composta da id (int primary key autoincrement), nome (varchar), padre (int not null, default 0).
padre a 0 è ovviamente indica che l'elemento non ha padri, mettere invece l'id del padre se ce l'ha:
(1)alberto->0
(2)giovanni->1
(3)luca->1
(4)francesco->2
Ecco la struttura della tabella:
codice:
CREATE TABLE `albero` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`nome` varchar(255) NOT NULL,
`padre` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
--
-- Dump dei dati per la tabella `albero`
--
INSERT INTO `albero` (`id`, `nome`, `padre`) VALUES
(1, 'alberto', 0),
(2, 'giovanni', 1),
(3, 'luca', 1),
(4, 'francesco', 2);