Foros del Web » Programando para Internet » PHP »

Crear json con arbol de directorios

Estas en el tema de Crear json con arbol de directorios en el foro de PHP en Foros del Web. Buenas Tengo un arbol de directorios en una tabla de la bd mysql... Esta tiene el id del directorio, el nombre y el id de ...
  #1 (permalink)  
Antiguo 12/01/2012, 11:37
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 17 años, 11 meses
Puntos: 50
Crear json con arbol de directorios

Buenas


Tengo un arbol de directorios en una tabla de la bd mysql... Esta tiene el id del directorio, el nombre y el id de su padre. Necesito generar un archivo json con esta estructura pero no lo e logrado. Cree una funcion recursiva y me recorre correctamente el directorio pero no logro qu me genere bien la estructura del mismo.


La clase NodoArbolDHTML es un ejemplo que vi en internet.

Dejo el codigo haber si identifican cual es mi error o son mis errores. Saludos y gracias

Código PHP:
<?
//creo una clase para generacion de los nodos del arbol.
class NodoArbolDHTML{
   var 
$id;
   var 
$title;
   var 
$hijos;
   
   function 
__construct($id,$title){
      
$this->id $id;
      
$this->title $title;
   }
   
   function 
anadirHijo($nodoHijo$id){   //añadir un hijo
      
if (!isset($this->hijos)){
         
$this->hijos = array();
      }
      
$this->hijos[$id] = $nodoHijo;
   }
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////// FUNCIONES GENERAN EL ARBOL ///////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
class GenArbDirectorios
{
    
// Funcion que genera realmente la estructura del arbol - obtiene lso hijos.
    
function HijArbol($IdPadre,$CabArbol)
    {
          
// cargo los nodos padres.
          
$CarPadres mysql_query("SELECT id, padre,title FROM directorios ai WHERE ai.padre=".$IdPadre." ORDER BY ai.title ASC");
          
// recorro los nodos encontrados.
          
while ($InFile mysql_fetch_array($CarPadres))
          {
                
// Genero los nodos hijo.
                
$CabHijo = new NodoArbolDHTML($InFile['id'],$InFile['title']);
                
$CabArbol->anadirHijo($CabHijo"loquesea");
                
$this->HijArbol($InFile['id'],$CabHijo);
          }
          
// Limpio la consulta.
          
mysql_free_result($CarPadres);
          
// retorno el resultado
          
return $CabArbol;
    }
}
// Creo el nodo principal.
$RaiArbol = new NodoArbolDHTML(0,"Principal");
// Realizo el llamado a las funciones que generan del arbol.
$CreArbol = new GenArbDirectorios();
// LLAMO LA FUNCION
HijArbol(0,$RaiArbol);
?>

Última edición por helacer; 12/01/2012 a las 11:44
  #2 (permalink)  
Antiguo 17/01/2012, 04:11
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Crear json con arbol de directorios

A ver si esto te sirve:


Código PHP:
Ver original
  1. <?php
  2.  
  3. /**
  4.  
  5. CREATE TABLE ’temp’ (
  6.  
  7. ‘id’ int(11) NOT NULL AUTO_INCREMENT,
  8.  
  9. ‘descripcion’ varchar(128) DEFAULT NULL,
  10.  
  11. ‘dependencia’ int(11) DEFAULT NULL,
  12.  
  13. PRIMARY KEY (‘id’)
  14.  
  15. ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=latin1
  16.  
  17. CREATE TABLE ’temp’ (
  18.  
  19. ‘id’ DOUBLE ,
  20.  
  21. ‘descripcion’ VARCHAR (384),
  22.  
  23. ‘dependencia’ DOUBLE
  24.  
  25. );
  26. INSERT INTO ’temp’ (‘id’, ’descripcion’, ’dependencia’) VALUES(’1′,’General’,’0′);
  27. INSERT INTO ’temp’ (‘id’, ’descripcion’, ’dependencia’) VALUES(’2′,’Reservas’,’0′);
  28.  
  29. INSERT INTO ’temp’ (‘id’, ’descripcion’, ’dependencia’) VALUES(’3′,’Facturacion’,’0′);
  30. INSERT INTO ’temp’ (‘id’, ’descripcion’, ’dependencia’) VALUES(’4′,’Reservas_Online’,’2′);
  31.  
  32. INSERT INTO ’temp’ (‘id’, ’descripcion’, ’dependencia’) VALUES(’5′,’Reservas_Offline’,’2′);INSERT INTO ’temp’ (‘id’, ’descripcion’, ’dependencia’) VALUES(’6′,’Cobros’,’3′);
  33. INSERT INTO ’temp’ (‘id’, ’descripcion’, ’dependencia’) VALUES(’7′,’Pagos’,’3′);
  34. */
  35.  
  36. mysql_connect(“localhost”, “INS_bd217754&#8243;, “rewqazxcv”);
  37.  
  38. mysql_select_db(“bd217754&#8243;);
  39.  
  40. function getMenu($xElement)
  41.  
  42. {
  43.  
  44. $xResponse = array();
  45.  
  46. $sql = “SELECT * FROM temp WHERE dependencia =$xElement’;;
  47.  
  48. if (!$query = mysql_query($sql))
  49.  
  50. $xResponse = array(“Error en la select:. mysql_error());
  51.  
  52. while ($fetch = mysql_fetch_assoc($query)) {
  53.  
  54. if ($fetch['dependencia'])
  55.  
  56. if (array_key_exists($fetch['dependencia'], $xResponse)) {
  57.  
  58. $xResponse[$fetch['dependencia']][$fetch['id']]['descripcion'] = $fetch['descripcion'];
  59.  
  60. $xResponse[$fetch['dependencia']][$fetch['id']]['id'] = $fetch['id'];
  61.  
  62. $xResponse[$fetch['dependencia']][$fetch['id']]['dependencias'] = (count(getMenu($fetch['id'])) ? getMenu($fetch['id']) : “Ninguna”);
  63.  
  64. } else {
  65.  
  66. $xResponse[$fetch['id']]['descripcion'] = $fetch['descripcion'];
  67.  
  68. $xResponse[$fetch['id']]['id'] = $fetch['id'];
  69.  
  70. $xResponse[$fetch['id']]['dependencias'] = (count(getMenu($fetch['id'])) ? getMenu($fetch['id']) : “Ninguna”);
  71.  
  72. }
  73.  
  74. }
  75.  
  76.  
  77. return $xResponse;
  78.  
  79. }
  80.  
  81. echo<pre>;
  82.  
  83. print_r($test = getMenu(3));
  84.  
  85. echo</pre>;
  86.  
  87. ?>
__________________
Fere libenter homines, id quod volunt, credunt.

Etiquetas: directorios, html, json, mysql, tabla, arboles
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:37.