Hola,
Storing Hierarchical Data in a Database
http://www.sitepoint.com/article/hierarchical-data-database/2/
La URL anterior describe como como almacenar datos jerárquicamente en una base de datos, así como recorrer en "preorden" el árbol para mostrarlo, añadir un nodo al árbol, etc....
Respecto a mostrar la ruta jeráquicamente, la función que describe permite pasar a dicha función el nodo raíz del subárbol que se mostrará.
...un ejemplo:
Código PHP:
--
-- Estructura de tabla para la tabla `categorias`
--
CREATE TABLE IF NOT EXISTS `categorias` (
`id` int(11) NOT NULL auto_increment,
`nombre` varchar(30) NOT NULL default '',
`padre` int(11) default NULL,
`izq` int(11) NOT NULL default '0',
`der` int(11) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=14 ;
--
-- Volcar la base de datos para la tabla `categorias`
--
INSERT INTO `categorias` (`id`, `nombre`, `padre`, `izq`, `der`) VALUES
(1, 'Tienda', NULL, 1, 12),
(2, 'Libros', 1, 2, 7),
(3, 'Aventura', 2, 3, 6),
(4, 'Infantil', 3, 4, 5),
(5, 'Zapatos', 1, 8, 9),
(6, 'Celulares', 1, 10, 11);
Código PHP:
<?php
//--CONEXIÓN-------------------------------------------------------
$dblink = mysql_connect('servidor','usuario','clave');
mysql_select_db('tienda');
//-----------------------------------------------------------------
function recorrer_arbol($raiz){
$result= mysql_query("SELECT izq,der FROM categorias WHERE id=$raiz");
$fila=mysql_fetch_array($result);
$derecha=array();
$result=mysql_query("SELECT * FROM categorias WHERE izq BETWEEN ".
$fila["izq"]." AND ".$fila["der"]." ORDER BY izq ASC");
while ($fila=mysql_fetch_array($result)){
extract($fila);
if (count($derecha)>0){
while ($derecha[count($derecha)-1]<$fila["izq"]){array_pop($derecha);}
}
echo str_repeat(' ',count($derecha))."<a href='".
$_SERVER['PHP_SELF']."?id=$id'>$nombre</a><br>\n";
$derecha[]=$fila["der"];
}
}
recorrer_arbol(1);
?>
Resultado: Tienda
Libros
Aventura
Infantil
Zapatos
Celulares
Para mostrar una rama se pasa el nodo raíz de esta, por ej: recorrer_arbol(2);
Libros
Aventura
Infantil --->Juan Bautista Cascallar Lorenzo<---