Ver Mensaje Individual
  #5 (permalink)  
Antiguo 06/04/2021, 18:01
cabeto_1972
 
Fecha de Ingreso: marzo-2004
Mensajes: 199
Antigüedad: 20 años
Puntos: 1
Respuesta: Ciclo for con consulta a la bd

Gracias por responder y es cierto, es una pirámide
quise probar solo llenando los datos en la tabla ya creada pero eso me limita la cantidad de niveles
de todas maneras al hacer consultar por consulta se cuelga en el 6 nivel y pues voy a explicar el tema como lo hice
defino el nivel y la posición del usuario ppal en un variables
$n = nivel ppal
$pos = posicion ppal
defino los niveles en variables y las posiciones siguientes en variables
//-------------------------NIVEL 1
$nivelA = $n+1;
$pos1 = ($pos*2)-1;
$pos2 = ($pos*2);
//-------------------------NIVEL 2
$nivelB = $n+2;
$pos3=($pos1*2)-1;
$pos4=($pos1*2);
$pos5=($pos2*2)-1;
$pos6=($pos2*2);
//-------------------------NIVEL 3
$nivelC = $n+3;
$pos7=($pos3*2)-1;
$pos8=($pos3*2);
$pos9=($pos4*2)-1;
$pos10=($pos4*2);
$pos11=($pos5*2)-1;
$pos12=($pos5*2);
$pos13=($pos6*2)-1;
$pos14=($pos6*2);

Teniendo en cuenta que debajo de cada posición existen dos campos
uno que es igual al doble de la posición menos 1 y otro que es igual al doble de la posición

luego empiezo a consultar uno por uno en donde el usuario es cero para reemplazar ese cero por el id del nuevo usuario asi

Consulto la pimera posicion y creo una variable que si es "0" cree una variable con el id del usuario nuevo de lo contrario realice la consulta de la siguiente posicion

$nred = "select * from tabla where nivel='$nivelA' and posicion='$pos1'"
$nusuario = $nreds['usuario'];
if($nusuario==0){
$redpos = $nreds['idr'];
}else{
$nred = "select * from tabla where nivel='$nivelA' and posicion='$pos2'";
$nusuario = $nreds['usuario'];
if($nusuario==0){
$redpos = $nreds['idr'];
}else{
$nred = "select * from tabla where nivel='$nivelB' and posicion='$pos3'";
$nusuario = $nreds['usuario'];


pero eso es un if dentro de un if dentro de un if y asi son 8000

dentro de las cosas que se me han ocurrido pense en hacer la verificación por niveles y si estan todos los campos ocupados llamar un archivo externo que me realice la otra consulta, pero no creo tampoco que sea una manera optima de realizarlo