Questo l'ho fatto in 5 minuti, quindi si può scrivere meglio, ma all'incirca avrai:
Il DB di esempio è questo
codice:
--
-- Struttura della tabella `categorie`
--
CREATE TABLE `categorie` (
`idc` int(11) NOT NULL auto_increment,
`idcs` int(11) NOT NULL default '0',
`nome` varchar(255) NOT NULL default '',
`qta` int(11) NOT NULL default '0',
PRIMARY KEY (`idc`)
) TYPE=MyISAM AUTO_INCREMENT=9 ;
--
-- Dump dei dati per la tabella `categorie`
--
INSERT INTO `categorie` VALUES (1, 0, 'computer', 0);
INSERT INTO `categorie` VALUES (2, 1, 'monitor', 0);
INSERT INTO `categorie` VALUES (3, 2, 'lcd', 5);
INSERT INTO `categorie` VALUES (4, 2, 'crt', 10);
INSERT INTO `categorie` VALUES (5, 1, 'mouse', 11);
INSERT INTO `categorie` VALUES (6, 0, 'auto', 0);
INSERT INTO `categorie` VALUES (7, 6, 'benzina', 4);
INSERT INTO `categorie` VALUES (8, 6, 'diesel', 3);
Il codice della pagina è
codice:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Documento senza titolo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="cache-control" content="no-cache">
</head>
<body>
<?php
function calcola($v){
$v2=NULL;
$query="select * from categorie where idcs='{$v['idc']}'";
$res=mysql_query($query);
while($rec=mysql_fetch_array($res)) $v2[]=$rec;
if(is_null($v2))
return $v['qta'];
else{
$tot=0;
foreach($v2 as $j) $tot=$tot+calcola($j);
return $tot;
}
}
$conn=mysql_connect("localhost:3306","WEBUSER","PASSWORD");
mysql_select_db("test");
$query="select * from categorie where idcs=0";
$res=mysql_query($query);
$inizio=NULL;
while($rec=mysql_fetch_array($res)) $inizio[]=$rec;
foreach($inizio as $v) echo "Totale per {$v['nome']} è ".calcola($v)."
";
mysql_close($conn);
?>
</body>
</html>