Algorithms Php

without javascript , just using html php and mySql
/*
#
# Table structure for table 'res_cat'
#
CREATE TABLE res_cat (
ID int(32) DEFAULT '0' NOT NULL ,
ID_uname char(40) NOT NULL,
UNIQUE ID (ID)
);
#
# Dumping data for table 'res_cat'
#
INSERT INTO res_cat VALUES( '1', 'head1');
INSERT INTO res_cat VALUES( '101', 'cat11');
INSERT INTO res_cat VALUES( '102', 'cat12');
INSERT INTO res_cat VALUES( '103', 'cat13');
INSERT INTO res_cat VALUES( '10101', 'subcat111');
INSERT INTO res_cat VALUES( '10102', 'subcat112');
INSERT INTO res_cat VALUES( '10103', 'subcat113');
INSERT INTO res_cat VALUES( '1010101', 'subcat1111');
INSERT INTO res_cat VALUES( '1010102', 'subcat1112');
INSERT INTO res_cat VALUES( '1010103', 'subcat1113');
INSERT INTO res_cat VALUES( '10201', 'subcat121');
INSERT INTO res_cat VALUES( '10202', 'subcat122');
INSERT INTO res_cat VALUES( '10203', 'subcat123');
INSERT INTO res_cat VALUES( '10301', 'subcat131');
INSERT INTO res_cat VALUES( '10302', 'subcat132');
INSERT INTO res_cat VALUES( '10303', 'subcat133');
INSERT INTO res_cat VALUES( '2', 'head2');
INSERT INTO res_cat VALUES( '201', 'cat21');
INSERT INTO res_cat VALUES( '202', 'cat22');
INSERT INTO res_cat VALUES( '203', 'cat33');
etc ...
*/
$mysql_link = mysql_connect("localhost", "user", "passwd");
mysql_select_db("res_cat", $mysql_link);
echo "" ;
function listrub ($id , $exploseID )
{
global $PHP_SELF ;
global $mysql_link ;
$maxi = ($id*100)+100 ;
$mini = $id*100 ;
$query = "SELECT * FROM res_cat where ID < $maxi and ID > $mini " ;
echo "
    ";
    if( $mysql_result = mysql_query($query , $mysql_link) )
    {
    while ($row = mysql_fetch_object($mysql_result))
    {
    // you have to link some action on leaves of course
    echo "
  1. $row->ID_uname
  2. " ;
    $testID = ($exploseID - ($exploseID %100 ))/100 ; // WARNING this is ugly .. only 3 level
    if ( $testID == $row->ID || $exploseID == $row->ID)
    {
    listrub ($row->ID , $exploseID ) ;
    }
    }
    }
    echo "
";
}
$father =999999999; // a big number
// get the grand...grand father
if ( $ID_rub >100 )
{
$father = $ID_rub ;
while ( $father >100 ) { $father= ( $father - ( $father %100) )/100 ; }
}
else{$father= $ID_rub ;}
listrub ($father , $ID_rub ,$mysql_link ) ;
echo "";
?>