Foros del Web » Programando para Internet » PHP »

Recursividad, Arbol Genealogico -Matriz Forzada y Multinivel

Estas en el tema de Recursividad, Arbol Genealogico -Matriz Forzada y Multinivel en el foro de PHP en Foros del Web. Buenas noches Necesito por aca algo de asesoria y orientacion porque se me ha complicado un poco hacer estos algoritmos . Tengo un proyecto en ...
  #1 (permalink)  
Antiguo 15/10/2015, 23:15
 
Fecha de Ingreso: octubre-2015
Ubicación: Venezuela
Mensajes: 1
Antigüedad: 8 años, 6 meses
Puntos: 0
Pregunta Recursividad, Arbol Genealogico -Matriz Forzada y Multinivel

Buenas noches

Necesito por aca algo de asesoria y orientacion porque se me ha complicado un poco hacer estos algoritmos.

Tengo un proyecto en mente, de un sistema multinivel 2x2 ( de nxn realmente ), y esto requiere aplicar recursividad y un arbol genealogico que funcione con niveles.

En primera instancia me he dedicado varias horas en pensar y buscar hasta encontrar un codigo en este foro, para hacer la recursividad para una consulta que me muestre todo el arbol de una manera muy basica que me da como resultado esto:

Código:
Pedro
-Luis
--Alonso
---hijodealonso
---hijadealonso
--Felix
---HijodeFelix
-Jose
--Jeisa
---HijodeJeisa
Esta parte no fue tan "sencilla" como parece para obtenerla pero se me complico un poco >.< no lograba pensarlo con claridad, pero me ayudo mucho el codigo que encontre, lo modifiqué para cargar la consulta en un array y luego irlo recorriendo para ir mostrando la matriz

El codigo "original" es este:

Código PHP:
    function arboleada$padre$nivel){
        
$nivel++;

        
$r mysqli_query($this->Conexion(),"SELECT * FROM niveles where padre ='$padre' " );

        while( 
$rs mysqli_fetch_array$r ) ){
            echo 
str_pad($rs["nombre"], strlen($rs["nombre"])+($nivel-1), "-"STR_PAD_LEFT). "<br />";    
            
$this->arboleada$rs["id"], $nivel );
        } 
        
mysqli_free_result$r );
    }

arboleada(0,0); // de esta manera consulto todo lo que haya en la tabla 
Lo he convertido ahora a este por cuestiones de rendimiento(les pido me corrijan):

Código PHP:
    function arbol$padre$nivel){
        
$nivel++;

        
$r mysqli_query($this->Conexion(),"SELECT * FROM niveles ORDER BY padre ASC" );
        while( 
$resul mysqli_fetch_array$r ) ){
            
$datos[] = $resul;
        }
        
            
$this->recursivo1$datos,0);
    }

    function 
recursivo1($array,$id){
        
$nivel++;
        foreach(
$array as $valor){
            
            if(
$valor[2] == $id){

                echo 
str_pad($valor["nombre"], strlen($valor["nombre"])+($nivel-1), "-"STR_PAD_LEFT). "<br />";
                
                
$this->recursivo1$array,$valor["id"]);
            }

        }
        
    }

arbol(0,0);//asi consulto todos los datos de la tabla 
En esta parte requiero ayuda porque:
me gustaría poderlo mostrar como un menú entre etiquetas
Código HTML:
<ul> <li> 
Pero me vuelvo un completo 8 al tratar de acomodarlo, si alguien pudiera ayudarme en esto se lo agradecería por favor.!

Mirandolo el resultado de la consulta desde otro punto de vista esto es como obtener unas subcategorías infinitas para un foro y lo que he querido es mostrarlas por completo en una consulta con su respectivo orden de hijos, con la vision de poderla manipular a mi gusto y antojo para otro tipo de consultas.

Planteando este sistema, implica que:
1.-Cada Usuario, debe poder referir a otros 2.

2.-Cada Usuario es una nueva matriz, es decir, la matriz de cada usuario son 2 + 4 = 6 usuarios mas debajo de el para completarla.
y para esto tengo una pregunta, es imprescindible hacer una codificación muy limpia para que el sistema pueda ser expandible y manipular sin dificultad los datos verdad?

3.- Si un usuario quiere subir de nivel debe "pagarle" el primer nivel a su "padre" directo, y el siguiente nivel al "padre de su padre".
Y en este punto estoy enrolladisimo tambien, no logro dar con un planteamiento logico para lograrlo! estoy enrolladisimo!

Espero poder explicarme bien en esto:
Pero he estado pensando en que maneras pudiera atacar este sistema y no se si pensar la programación como un simple arbol genealógico
y en ese caso, tendria que programarlo como si fuera un arbol o como si fueran niveles? porque de la segunda manera no se me ocurre nada T_T

agradezco de antemano su apoyo en esto por favor, y espero haberme explicado, si no se me entendio nada, preguntenme para responderles con la mayor claridad posible!

Etiquetas: matriz, multinivel, recursividad, sistema
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 18:16.