Pregunta: Como puedo armar un árbol de categorías al estilo:
categoria1
-categoria1.1
--categoria1.1.1
--categoria1.1.2
categoria2
-categoria2.1
Respuesta:
Primero necesitamos una tabla en mysql como esta:
Código:
CREATE TABLE `categorias` (
`codigo` int(11) unsigned NOT NULL auto_increment,
`nombre` varchar(255) default NULL,
`padre` int(11) unsigned NOT NULL default '0',
PRIMARY KEY (`codigo`)
) TYPE=MyISAM;
insert into `categorias` values
(1,'categoria1',0),
(2,'categoria1.1',1),
(3,'categoria1.1.1',2),
(4,'categoria1.1.2',2),
(5,'categoria2',0),
(6,'categoria2.1',5);
Luego, con esta función podemos listarla:
Código PHP:
function arbol( $padre, $nivel ){
$nivel++;
$r = mysql_query( "SELECT * FROM categorias where padre ='$padre' " );
while( $rs = mysql_fetch_assoc( $r ) ){
echo str_pad($rs["nombre"], strlen($rs["nombre"])+($nivel-1), "-", STR_PAD_LEFT). "<br />";
arbol( $rs["codigo"], $nivel );
} mysql_free_result( $r );
}
$nivel = 0;
arbol( 0, $nivel );