PHP:¿Cómo puedo armar un árbol de categorías?
De Foros del Web
Cómo 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 ésta:
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 );
--nicolaspar 14 May 2007
Este artículo es parte de las FAQs de PHP y el Manual de PHP.
- Indice de las FAQs: Conceptos, Configuración, Formularios, Manejo de Archivos, Integración con Bases de Datos, Sesiones, Extensiones y Librerías, Seguridad, Funciones, Clases y Objetos, Frameworks
- Recomendamos también: Guía Zend, Frameworks PHP, Aceleradores PHP
- Agregar al FAQ: PHP: Instrucciones para agregar una pregunta al FAQ de PHP
- Para preguntas sobre PHP: Foro de Php
