Foros del Web » Programando para Internet » Javascript »

Problema con estructura de arbol

Estas en el tema de Problema con estructura de arbol en el foro de Javascript en Foros del Web. Hola a todos tengo implementado en una aplicacion (Jsp con javascript) una estructura de arbol, la estrucutura la obtengo de la base de datos mi ...
  #1 (permalink)  
Antiguo 27/07/2011, 10:49
 
Fecha de Ingreso: noviembre-2008
Mensajes: 4
Antigüedad: 15 años, 5 meses
Puntos: 0
Problema con estructura de arbol

Hola a todos

tengo implementado en una aplicacion (Jsp con javascript) una estructura de arbol, la estrucutura la obtengo de la base de datos mi problema es el siguiente:

jefe: id: 100
|
----------------------------------
| |
subjefe:id:101
|
-------------------
| |
empleado:id:94
|
|
encargado:id:104

el empleado con el id 94 es menor que su padre por lo cual ya no se muestran sus hijos en este caso el encargado con el id 104.
tengo claro que el problema es que el id es menor

¿es posible tener un hijo con id menor que su padre ?

*aclaro que no es posible cambiar los id's en la base de datos porque asi esta la estructura de la organizacion por lo que tengo que buscar una solucion en codigo.

no se si me explique

de antemano gracias
  #2 (permalink)  
Antiguo 27/07/2011, 11:46
Avatar de goteen_mx  
Fecha de Ingreso: abril-2005
Ubicación: D.F.
Mensajes: 403
Antigüedad: 19 años
Puntos: 37
Respuesta: Problema con estructura de arbol

En la base de datos necesitas tener 2 Id, uno con el Id del Puesto y el otro que sea Id padre para poderlo relacionar, de otra manera no veo como puedas relacionarlo.

Saludos.
__________________
Born to be free.
  #3 (permalink)  
Antiguo 27/07/2011, 12:15
 
Fecha de Ingreso: noviembre-2008
Mensajes: 4
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Problema con estructura de arbol

Cita:
Iniciado por goteen_mx Ver Mensaje
En la base de datos necesitas tener 2 Id, uno con el Id del Puesto y el otro que sea Id padre para poderlo relacionar, de otra manera no veo como puedas relacionarlo.

Saludos.
Asi es, en la base tengo

| id | idPadre | descripcion | otro | otro | otro |

|100 | 0 | xxxxx | xx | xx | xx | <--- el padre es 0 porque es la raiz
|101 | 100 | xxxxx | xx | xx | xxx |
|94 | 101 | xxxx | xx | xx | xx |
|104 | 94 | xxxx | xx | xx | xxx |

de esta manera los realciono el problema es que cuando el javascript lo procesa "toma" que el id 94 no puede tener un padre 101 porque es mayor

gracias por responder
  #4 (permalink)  
Antiguo 27/07/2011, 17:16
Avatar de goteen_mx  
Fecha de Ingreso: abril-2005
Ubicación: D.F.
Mensajes: 403
Antigüedad: 19 años
Puntos: 37
Respuesta: Problema con estructura de arbol

En si deben estar relacionados por el ID no por el valor que representa, se me ocurrio este ejemplo, este ejemplo NO es muy eficiente ya que se reccorren todos los nodos de niveles inferiores para conocer los hijos , pero dada tu estructura creo yo que en algun momento puedes tener más de un hijo en cada nodo. Espero y sea de tu utilidad.

Saludos.

Código Javascript:
Ver original
  1. <html>
  2. <head>
  3.     <script language="javascript">
  4.     var aPuestosPred=new Array();
  5.     function f_dibujaArbol(){
  6.         var vsArbol = "";  
  7.         //Estos deben de generarse desde el servidor
  8.         aPuestosPred[0] = [100,0,"padre"];
  9.         aPuestosPred[1] = [101,100,"hijo"];
  10.         aPuestosPred[2] = [108,100,"hijo 2"];
  11.         aPuestosPred[3] = [94,101,"nieto"];
  12.         aPuestosPred[4] = [95,108,"nieto"];
  13.         aPuestosPred[5] = [96,108,"nieto2"];
  14.         aPuestosPred[6] = [104,94,"biznieto"];
  15.         aPuestosPred[7] = [102,95,"biznieto"];
  16.         vsArbol = f_dibujaRama(aPuestosPred[0][0]);//se envia el id del nodo a dibuar los hijos
  17.         document.getElementById("div_arbol").innerHTML = vsArbol;
  18.     }
  19.    
  20.     function f_dibujaRama(id){
  21.         var vsHijo = aPuestosPred[f_buscaEnArray(id)][2] + " Padre:  " + aPuestosPred[f_buscaEnArray(id)][1] + " -- Id hijo:  " + aPuestosPred[f_buscaEnArray(id)][0] + "<br></br>";
  22.         var aHijos = f_fieneHijos(id);
  23.         var f_hijos="";
  24.         for(var i = 0; i < aHijos.length; i++)
  25.             f_hijos += "f_dibujaRama(" + aHijos[i] + ") +"; // de manera recursiva se llaman a los dibijar los hijos del nodo actual
  26.         if(f_hijos.length>0)
  27.             return vsHijo + eval(f_hijos.substring(0,f_hijos.length-1));
  28.         return vsHijo;
  29.     }
  30.    
  31.     function f_fieneHijos(id){
  32.         var vsHijos = new Array();
  33.         for(var i = 0; i < aPuestosPred.length; i++){
  34.             if(aPuestosPred[f_buscaEnArray(id)][0]==aPuestosPred[i][1])
  35.                 vsHijos.push(aPuestosPred[i][0]);
  36.         }
  37.         return vsHijos;
  38.     }
  39.    
  40.     function f_buscaEnArray(id){
  41.         for(var i = 0; i< aPuestosPred.length; i++){
  42.             if(aPuestosPred[i][0]==id)
  43.                 return i;
  44.         }
  45.         return -1;
  46.     }
  47.    
  48.     </script>
  49. </head>
  50. <body>
  51.     <div id="div_arbol"></div>
  52.     <input type="button" value="dibujaArbol" onclick="f_dibujaArbol();"/>
  53. </body>
  54. </html>
__________________
Born to be free.
  #5 (permalink)  
Antiguo 28/07/2011, 08:41
 
Fecha de Ingreso: noviembre-2008
Mensajes: 4
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Problema con estructura de arbol

Muchas gracias, por lo visto a simple vista si me sirve lo analizare a detalle


gracias

saludos

Etiquetas: estructura, js, 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 04:57.