PHP - funcion recursiva

 
Vista:

funcion recursiva

Publicado por edgar brito molina (1 intervención) el 01/08/2020 06:51:46
tengo una tabla id,promotor,promovido
se trata de una red de personas persona A promueve a B a su vez persona B promueve a C y asi sucesivamente

quisiera una funcion que me sume cuantas personas tiene A en su red (es decir B mas los promovidos por B + C mas los promovidos por C) es decir el numero de personas abajo de A
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de joel
Val: 2.850
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

funcion recursiva

Publicado por joel (867 intervenciones) el 01/08/2020 09:27:27
Hola Edgar, nos puedes adjuntar la tabla con los datos para poder desarrollarlo?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Edgar
Val: 9
Ha disminuido su posición en 8 puestos en PHP (en relación al último mes)
Gráfica de PHP

funcion recursiva

Publicado por Edgar (3 intervenciones) el 02/08/2020 04:22:22
la tabla es multinivel un promovido se convierte en promotor una vez que promueve a alguien mas y asi sucesivamente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de javier
Val: 1.583
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

funcion recursiva

Publicado por javier (440 intervenciones) el 01/08/2020 10:33:50
Hola,

puedes hacer una cosa como esta:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
function buscaPromovidos($promotor){
 
    $bd = new consulta_principal();//asi conecto con BBDD usa tu conexion
    $tbl = 'promociones';
    $where = "WHERE promotor = '$promotor'";
    $clmns = '*';
    $promotor = $bd->leer($tbl, $clmns, $where);//aqui consulta del tipo SELECT {$clmns} FROM {$tbl} {$where} "
 
     $numero = $bd->numResult($tbl, $where);   //aqui hago una consulta del tipo; SELECT COUNT(*) FROM {$tbl}  {$where}")
 
     if ($promotor != false){
        for($i = 0; $i< count ($promotor); $i++){
 
             buscaPromovidos($promotor[$i]['promovido']);
             $numero += $numero2 = $bd->numResult($tbl, $where);
 
        }
 
       return $numero;
 
        }
}
 
$persona = 'Juan Garcia';
$numero = buscaPromovidos($persona);
echo "numero resultados promovidos de Juan Garcia es de: $numero personas. <br /><br />" ;

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Edgar
Val: 9
Ha disminuido su posición en 8 puestos en PHP (en relación al último mes)
Gráfica de PHP

funcion recursiva

Publicado por Edgar (3 intervenciones) el 02/08/2020 04:23:56
Gracias sin embargo entiendo que solo cuenta los promovidos del primer nivel pero cada uno de esos promovidos se conviertenen promotores una vez que promueven a alguien mas y estos a su vez asi sucesivamente, de tal forma que los niveles son infinitos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de javier
Val: 1.583
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

funcion recursiva

Publicado por javier (440 intervenciones) el 02/08/2020 20:40:03
de esta manera deberia servirte

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
function buscaPromovidos($promotor){
 
 global $total;
 
 $bd = new consulta_principal();//asi conecto con BBDD usa tu conexion
 $tbl = 'promociones';
 $where = "WHERE promotor = '$promotor'";
 $clmns = '*';
 $promotor = $bd->leer($tbl, $clmns, $where);//aqui consulta del tipo SELECT {$clmns} FROM {$tbl} {$where} "
 
 
  if(count ($promotor) != 0) {
 
     $numero = count($promotor);
     $total += $numero;
 
     for($i = 0; $i< count ($promotor); $i++){
 
        buscaPromovidos($promotor[$i]['promovido']);
 
        }
    }
 
     return $total;
 
}
 
 
$persona = 'Pepe flores';
$numero = buscaPromovidos($persona);
echo "numero personas promovidas por $persona es de: $numero. <br /><br />";

cuenta a todos los niveles

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de javier
Val: 1.583
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

funcion recursiva

Publicado por javier (440 intervenciones) el 02/08/2020 21:12:36
y una tabla de la forma

id promotor promovido

no es la mejor opcion para usar

EDITO:
no habia visto el rar, la tabla esta bien y la funcion deberia funcionar

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Edgar
Val: 9
Ha disminuido su posición en 8 puestos en PHP (en relación al último mes)
Gráfica de PHP

funcion recursiva

Publicado por Edgar (3 intervenciones) el 04/08/2020 20:52:12
No sigue sin funcionar el proceso se cicla y se desborda la memoria
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de javier
Val: 1.583
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

funcion recursiva

Publicado por javier (440 intervenciones) el 05/08/2020 20:44:57
A mi no me pasa eso, tu has pasado tu tabla de la BBDD, me la he hecho
y la funcion cuenta bien, no se vuelve infinito el bucle.

Muestra el codigo que has hecho.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar