Ver Mensaje Individual
  #8 (permalink)  
Antiguo 28/02/2007, 11:18
Avatar de locojars
locojars
 
Fecha de Ingreso: mayo-2002
Mensajes: 265
Antigüedad: 21 años, 11 meses
Puntos: 4
Re: Mostrar categorias en forma de arbol

Yahoo ha liberado una libreria muy buena (YUI) Donde ellos hacen la recursividad para la creacion del arbol.

Lo unico que necesitas hacer es bajarla y utilizar los archivo necesarios, en mi caso, te mando un script con el que he logrado ya armar un arbol de este tipo, espero lo comprendas :)

Código PHP:
<!-- Namespace source file -->  
<script src = "yahoo.js" ></script> 
<!-- Dependency source files -->  
<script src = "event.js" ></script> 
<!-- TreeView source file -->  
<script src = "treeview.js" ></script> 
<script src="treeview-debug.js" ></script>
<script src="logger.js"></script>

<script>
var tree; 
    function treeInit() { 
       tree = new YAHOO.widget.TreeView("treeDiv1"); 
       var root = tree.getRoot(); 
<?php
// Realizo la consulta de la tabla
$res $db->query("select ID,nombre,parent,nivel from proy_actividades where IDProyecto=".$ID);
while(
$row $res->fetchRow(DB_FETCHMODE_OBJECT))       
{
    
// Cambia las tíldes a código html para que no de errro el javascript
     
$nombre htmlentities($row->nombre);
     
?>    
// Genero las etiquetas de cada registo          
var label<?php echo $row->ID;?> = { label: "<?php echo $nombre;?>", href:"proyecto.php", target:"main" };            
<?php
    
// En mi caso como los registros de primer nivel tiene parent 0 hago la validacion para saber quienes iran en el root
    
if($row->parent==0)
    {
      
$parent "root";
    }
    else
    {
      
$parent "nodo".$row->parent;
    }
?>
// genero los nodos
       var nodo<?php echo $row->ID;?> = new YAHOO.widget.TextNode(label<?php echo $row->ID;?><?php echo $parent;?>, false); 
<?php
}     

?>
       tree.draw(); 
    }

</script>
<body onload="treeInit()">
<link rel="stylesheet" type="text/css" href="tree.css">
<link rel="stylesheet" type="text/css" href="screen.css">

 <div id="content">
      <h3>Mi árbol</h3>
      <div id="treeDiv1"></div>
    </div>
  </div>
</body>
Espero te funcione, al menos a mi me ayuda muchisimo y la recursividad se la dejo a los amigos de Yahoo.

Salu2,
Jars
__________________
No le digas a Jehová que tan grande es tu problema, dile a tu problema cuan grande es Jehová.