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:
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 matrizPedro -Luis --Alonso ---hijodealonso ---hijadealonso --Felix ---HijodeFelix -Jose --Jeisa ---HijodeJeisa
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
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
me gustaría poderlo mostrar como un menú entre etiquetas
Código HTML:
<ul> <li>
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!