Tema: FAQ's de PHP
Ver Mensaje Individual
  #175 (permalink)  
Antiguo 14/05/2007, 09:00
Avatar de nicolaspar
nicolaspar
 
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Re: FAQ's de PHP

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;
arbol0$nivel ); 
__________________
Mi punto de partida es Que Bueno Lo Nuevo