I´m not quite sure if it could help you, because it´s whole in portuguese, 
but i´ll send you.

My table is called categoria and has the follow structure:

CREATE TABLE `categoria` (
     `id` int(20) NOT NULL auto_increment,
    `cat_id` int(20) NOT NULL default '0',
    `nome` varchar(50) NOT NULL default '',
    `icone` varchar(255) NOT NULL default '',
    `cod_shop` varchar(5) NOT NULL default '',
    `topo` char(1) NOT NULL default '',
    PRIMARY KEY  (`id`)
)

Where the relations each register of the tree are like this:

ID , CATEGORIA, CAT_ID
1 , Top , 0
2 , Level 1 , 1
3 , Level 2 ,2
4 , Another Top , 0

And then i use the follow routine to get the tree:

$sql = "SELECT
   *
  FROM
   categoria
  ORDER BY
   cat_id, nome";
 $con->Query($sql);

 $counter = $con->count;
 $categorias=array();
 for($z=0;$z<$con->count;$z++){
  $con->Seek($z);
  list($id_cat, $cat_id, $nome_cat, $icone_cat) = $con->result;
  $categorias[$id_cat]=array("id_cat" => $id_cat, "cat_id" => $cat_id, 
"nome_cat" => $nome_cat, "icone_cat" => $icone_cat, "familia" => $id_cat, );
  $continua=$cat_id!=null && $cat_id>0;
  if ($continua) {
   $qual=$cat_id;
   $categorias[$id_cat]["indice"]="";
   while ($continua) {
    
$categorias[$id_cat]["indice"]=$categorias[$qual]["nome_cat"].$categorias[$id_cat]["indice"];
    $continua=$categorias[$qual]["cat_id"]!=null && 
$categorias[$qual]["cat_id"]>0;
    $tem_pai=$cat_id!=null && $cat_id>0;
    if ($tem_pai) $pai=$cat_id;
    while ($tem_pai) {
     if (!strpos($categorias[$pai]["familia"],", 
".$categorias[$id_cat]["id_cat"]))
      $categorias[$pai]["familia"].=", ".$categorias[$id_cat]["id_cat"];
     $tem_pai=$categorias[$pai]["cat_id"]!=null && 
$categorias[$pai]["cat_id"]>0;
     $pai=$categorias[$pai]["cat_id"];
    }
    if ($continua) {
     $qual=$categorias[$qual]["cat_id"];
    }
   }
  }
 }
 reset($categorias);
 $linhas=array();
 foreach ($categorias as $categoria) {
  $linhas[$categoria["indice"].$categoria["nome_cat"]]=array("id_cat" => 
$categoria["id_cat"], "nome_cat" => $categoria["nome_cat"], "icone_cat" => 
$categoria["icone_cat"], "indice" => $categoria["indice"], "familia" => 
$categoria["familia"]);
 }
 ksort($linhas);
 reset($linhas);

Hope help you.

-- 
João Cândido de Souza Neto
Curitiba Online
[EMAIL PROTECTED]
(41) 3324-2294 (41) 9985-6894
http://www.curitibaonline.com.br


""abhishek jain"" <[EMAIL PROTECTED]> escreveu na mensagem 
news:[EMAIL PROTECTED]
> Hi,
> I have a table structure like :
> ID , NAME, PARENT_ID
> 1 , Top , 0
> 2 , Level 1 , 1
> 3 , Level 2 ,2
> 4 , Another Top , 0
>
>
> and so on.
> I wanted to know the topmost cat. if i have the lowest category id ie. 3 
> in
> this case.
> I wanted to get like 3->2->1
> Pl. help me , cn i do this in one query, also i do not know how many
> sublevels are there,
> Thanks,
> Abhishek jain
> 



-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to