Estoy tratando de lograr un arbol jerarquico, en el siguiente orden: regiones, departamentos, zonas y recintos, donde la region es el elemento mas alto, y las regiones se dividen en departamentos, estos a su vez en supervisorias y por ultimo en cada supervisoria existen los recintos.
He leido con atencion el FAQ de como crear un arbol jerarquico a partir de una tabla , pero no logro extrapolar los ejemplos.
Por asuntos de estetica, he buscado en la red y encontre una libreria llamada KoolPHP Treeview y por mas que trato no se como traspolar los ejemplos a mi caso para que mi arbol "renderee" correctamente, pues todos los elementos salen como nodo raiz (root), cuando en la tabla esta indicado claramente en la columna "esquema" cual es el nodo padre de cada elemento.
Esta es el codigo que estoy usando:
Código PHP:
<?php
$link = mysql_connect('localhost', 'polnac_db', 'MejorPN2010');
if (!$link) {
die('No pudo conectarse: ' . mysql_error());
}
?>
<?php
//Step 1: Register KoolTreeView component to your page
require $KoolControlsFolder."KoolControls/KoolTreeView/kooltreeview.php";
//Step 2: Create treeview object.
$kTree = new KoolTreeView("kTree");
//Step 3: Set properties for tree
$kTree->styleFolder = "KoolControls/kooltreeview/styles/default";
$kTree->imageFolder = "KoolControls/kooltreeview/icons";
$kTree->selectEnable = true;
$kTree->showLines = true;
$SQL = "SELECT id, nombre, esquema, tipo_esquema FROM polnac_db.jos_polnac_esquema";
$kTree->getRootNode()->text = "ORGANIZACION";
$kTree->getRootNode()->image="ada.gif";
//$kTree->getRootNode()->id="0";
//$kTree->getRootNode()->esquema="0";
$kTree->getRootNode()->esquema="esquema";
$kTree->getRootNode()->expand=true;
$kTree->showLines = true;
$result = mysql_query($SQL);
while($fila = mysql_fetch_assoc($result)) {
$kTree->Add("root", "Esquema".$fila['esquema'], $fila['nombre'], false,"ada.gif","");
}
?>
<?php echo $kTree->Render();?>
La pagina de KoolPHP Treeview muestra este ejemplo:
Código PHP:
<?php
//Step 1: Register KoolTreeView component to your page
require "kooltreeview/kooltreeview.php";
//Step 2: Create treeview object.
$kTree = new KoolTreeView("kTree");
//Step 3: Set properties for tree
$kTree->styleFolder = "kooltreeview/styles/default";
$kTree->imageFolder = "kooltreeview/icons";
$kTree->selectEnable = true;
//Step 4: Building tree
$kTree->getRootNode()->text = "I am root node";
$kTree->Add("root","node1","First node");
$kTree->Add("root","node2","Second node");
?>
<html>
<head></head>
<body>
<!-- Step 5: Render tree -->
<?php echo $kTree->Render();?>
</body>
</html>
La estructura de mi tabla, con algunos datos es esta:
Código:
/*Table structure for table `jos_polnac_esquema` */ DROP TABLE IF EXISTS `jos_polnac_esquema`; CREATE TABLE `jos_polnac_esquema` ( `id` int(5) NOT NULL AUTO_INCREMENT, `nombre` varchar(100) DEFAULT NULL, `esquema` int(5) DEFAULT NULL, `tipo_esquema` enum('regional','departamento','supervisoria','recinto') DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=33 DEFAULT CHARSET=utf8; /*Data for the table `jos_polnac_esquema` */ insert into `jos_polnac_esquema`(`id`,`nombre`,`esquema`,`tipo_esquema`) values (1,'DISTRITO NACIONAL',0,'regional'),(2,'S. D. ESTE',0,'regional'),(3,'S. D. OESTE',0,'regional'),(4,'S. D. NORTE',0,'regional'),(5,'CIBAO CENTRAL',0,'regional'),(6,'SURESTE',0,'regional'),(7,'NORESTE',0,'regional'),(8,'ESTE',0,'regional'),(9,'SUR CENTRAL',0,'regional'),(10,'SUR',0,'regional'),(11,'OESTE',0,'regional'),(12,'NORTE',0,'regional'),(13,'NOROESTE',0,'regional'),(14,'OPERACIONES POLICIALES',0,'regional'),(15,'C1',1,'departamento'),(16,'C2',1,'departamento'),(17,'C3',1,'departamento'),(18,'C4',1,'departamento'),(19,'C5',1,'departamento'),(20,'C6',1,'departamento'),(21,'E-1',2,'departamento'),(22,'E-2',2,'departamento'),(23,'LOS MILLONES / RESTAURADORES',15,'supervisoria'),(24,'NACO',15,'supervisoria'),(25,'LA ESPERILLA',15,'supervisoria'),(26,'PIANTINI / PARAISO',15,'supervisoria'),(27,'ENS QUISQUEYA',15,'supervisoria'),(28,'ENS LOS PRADOS',15,'supervisoria'),(29,'LOS JARDINES',15,'supervisoria'),(30,'SAN GERONIMO',15,'supervisoria'),(31,'OZAMA',22,'supervisoria'),(32,'DEST OZAMA',31,'recinto'); /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
Aqui se puede ver como me sale el arbol:
Saludos y gracias!!!