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]