Hola , pues bien me surge la duda de como hacer un listado de categorias con subcategorias.
La base de datos es esta
CREATE TABLE IF NOT EXISTS `aco_proyecto` (
`proye_id` int(3) NOT NULL AUTO_INCREMENT,
`proye_nombre` varchar(100) NOT NULL,
`proye_padreid` int(3) DEFAULT NULL,
PRIMARY KEY (`proye_id`),
KEY `proye_padreid` (`proye_padreid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=31 ;
--
-- Volcar la base de datos para la tabla `aco_proyecto`
--
INSERT INTO `aco_proyecto` (`proye_id`, `proye_nombre`, `proye_padreid`) VALUES
(1, 'Cursos', NULL),
(2, 'Caritas', 1),
(3, 'Electricidad', 2),
(4, 'Soldadura', 2),
(5, 'Bugaderia', 2),
(6, 'Dependiente/a de tienda', 2),
(7, 'Gestion de residuos', 2),
(8, 'Gestion de almacen', 2),
(9, 'Cursos Cruz Roja', 1),
(10, 'Cursos betula', 1),
(11, 'Cursos La Caixa', 1),
(12, 'Cursos SOC', 1),
(13, 'Cursos Generalitat', 1),
(14, 'Produccion', NULL),
(15, 'Ropa', 14),
(16, 'Recogida', 15),
(17, 'Tria', 15),
(18, 'Muebles', NULL),
(19, 'Taller de muebles', 18),
(20, 'Deixalleria', 14),
(21, 'Neteja externa e interna', 14),
(22, 'Garraf', NULL),
(23, 'Bugaderia', 22),
(24, 'Jardineria', 22),
(25, 'Rehabilitacion', 22),
(26, 'Recogida de carton', 22),
(27, 'Ropa', 22),
(28, 'Deixalleria', 22),
(29, 'Limpieza', 22),
(30, 'Cursos', 22);
La cosa es que quiero hacer un input select y que en el option me salgan tabuladas los proyectos o categorias que son hijos de otro y otra tabulacion si el padre es hijo de otro.
Dibujado seria como pongo a continuacion, asi hasta llegar a la categoria final, que no es padre de nadie.
CatPadre1
CatPadre2
CatHijo
Luego en otra tabla quiero guardar el arbol con sus nombres y se me habia ocurrido hacer el metodo siguiente.
Class Proyecto{
private $id;
private $nombre;
private $padre;
setters y getters
metodosdiferentes
public function getTree() {
$arbol = "";
if ( $this->padre != NULL && $this->padre != "" ) {
$padre = new Proyecto();
$padre->setPadre($this->padre);
$padre->Load();
$arbol = $padre->getTree();
$arbol.= " > ";
}
$arbol .= $this->nombre;
return $arbol;
}
Lo ejecuto asi, pero la pagina queda cargando y al final no muestra nada ni ejecuta el codigo que hay debajo de este.
$proyecto = new Proyecto();
$proyecto->setId(3);
$proyecto->Load();
print $proyecto->getTree();
Alguna idea de como hacerlo?
Gracias!