Foros del Web » Programando para Internet » PHP »

Crear base de datos simulación matriz forzada 5x7

Estas en el tema de Crear base de datos simulación matriz forzada 5x7 en el foro de PHP en Foros del Web. Buenas Noches. Estoy creando un sistema para un negocio multinivel, llevo meses rompiendome la cabeza y no consigo hacer la normalizacion de la base de ...

  #1 (permalink)  
Antiguo 20/01/2017, 17:08
 
Fecha de Ingreso: agosto-2014
Ubicación: barranquilla
Mensajes: 93
Antigüedad: 9 años, 8 meses
Puntos: 0
Crear base de datos simulación matriz forzada 5x7

Buenas Noches.

Estoy creando un sistema para un negocio multinivel, llevo meses rompiendome la cabeza y no consigo hacer la normalizacion de la base de datos para que maneje la logica del sistema multinivel matriz forzada. por ejemplo

Situación 1

1. Se registra un usuario como cabeza de nivel (1),
2. El usuario cabeza de nivel sera el padre de todos los afiliados
3. en el nivel dos solo puede registrar 7 afiliados.
4. Cuando el nivel 2 llege a los 7, se registraran los nuevos usuarios en el nivel 3 hasta que se llene con 49
5. cuando el nivel 3 este lleno con 49 no recibirá mas usuario, estos nuevos usuarios pasaran al nivel 4 hasta llenar 343
6. cuando el nivel 4 se llener con 343 registros los nuevos pasaran al nievl 5 hasta completar 2041. esto quiere decir el los cinco niveles en una matriz tendra la suma de los registros de cada nivel.

Situacion 2.

Cuando se ingrese un nuevo afiliado de un afiliado del cualquier nivel el nuevo afiliado sera nivel1 de su red y tambien sera nivel 2 de su padre y asi hasta llenar su como se menciona en la situacion 1

Preguntas.
Como conocer los afiliados de mis afiliados en cada nive (1, 2, 3, 4, 5)

He tratado de todas las formas y no recuentro la solución algana orientación por favor.
  #2 (permalink)  
Antiguo 21/01/2017, 04:11
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: Crear base de datos simulación matriz forzada 5x7

Hola josegaitan123,

Yo he visto hacer eso con una tabla auxiliar "upline" con tantos campos como niveles, algo así:

Código SQL:
Ver original
  1. CREATE TABLE `upline` (
  2.  `id` INT(11) NOT NULL DEFAULT '0' COMMENT 'Id del usuario',
  3.  `u1` INT(11) NOT NULL DEFAULT '0' COMMENT 'Id del upline inmediato anterior',
  4.  `u2` INT(11) NOT NULL DEFAULT '0' COMMENT 'Id del segundo upline inmediato anterior',
  5.  `u3` INT(11) NOT NULL DEFAULT '0' COMMENT 'Id del tercer upline inmediato anterior',
  6.  `ds` INT(11) NOT NULL DEFAULT '0' COMMENT 'Id del sponsor directo',
  7.  UNIQUE KEY `id` (`id`)
  8. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci

Es de un sistema que compre hecho en Perl hace muchos años, pero funciona, así que aunque sea antiguo, tal vez te sirva...
  #3 (permalink)  
Antiguo 21/01/2017, 07:20
 
Fecha de Ingreso: agosto-2014
Ubicación: barranquilla
Mensajes: 93
Antigüedad: 9 años, 8 meses
Puntos: 0
Respuesta: Crear base de datos simulación matriz forzada 5x7

Gracias rbczgz

Amigo gracias por tu respuesta y tu tiempo, hare una prueba como se muestra en la tabla.

Una pregunta para poder entender la lógica de la tabla.

¿Que es el sponsor directo.?

Última edición por josegaitan123; 21/01/2017 a las 07:27
  #4 (permalink)  
Antiguo 21/01/2017, 07:50
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: Crear base de datos simulación matriz forzada 5x7

Hola josegaitan123,

Es por si existe la posibilidad de que lo patrocine uno y se le coloque a otro. Eso sería el que lo patrocinó.
  #5 (permalink)  
Antiguo 21/01/2017, 07:58
 
Fecha de Ingreso: agosto-2014
Ubicación: barranquilla
Mensajes: 93
Antigüedad: 9 años, 8 meses
Puntos: 0
Respuesta: Crear base de datos simulación matriz forzada 5x7

Este ejemplo solo funcionaria con tres niveles cierto?
  #6 (permalink)  
Antiguo 21/01/2017, 12:23
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: Crear base de datos simulación matriz forzada 5x7

Hola josegaitan123,

El sistema del que lo he sacado tiene 3 niveles, sí.
  #7 (permalink)  
Antiguo 24/01/2017, 22:09
 
Fecha de Ingreso: julio-2014
Mensajes: 334
Antigüedad: 9 años, 9 meses
Puntos: 30
Respuesta: Crear base de datos simulación matriz forzada 5x7

En el 2013 desarrolle un script para eso precisamente, la parte que no gusta para los demás es que no la envio gratuitamente, pues lo vendo.

Tu problema está resuelto con este script, se puede configurar como tu lo desees, mononivel, multinivel sin limite de profundida ni de ancho, matriz forzada de cualquier tamaño e incluso crear sub-matrizes forzadas mas pequeñas que la matriz directamente superior.

Y no solo hace eso, tambien tiene la logica para rellenar los huecos libres de una matriz (es opcional, depende si quieres o no wue lo haga), tambien te los rellena de manera equitativa para todos o si das preferencia a segun quien.

En su dia tuve la misma inquietud que tu, pero despues de pensar y pensar encontré la manera mas efectiva de gestionar cualquier tipo de matriz.

Como estoy seguro que no te va a interesar comprar mi script, te ayudaré un poco para que resuelvas tu rompecabezas. A mi siempre me ha funcionado dibujar (en lo posible)mi problemas, así pienso en la solucion mirando el problema en el papel.

Solo dibuja una piramide, y dentro de ella, piramides mas pequeñas (trata de hacerlo aasimetrico), despues que la tengas, comienza apensar como deberia de funcionar tu script.

Ahi lo dejo, suerte.

Última edición por Triby2; 24/01/2017 a las 22:13 Razón: Se me olvido una palabra
  #8 (permalink)  
Antiguo 10/02/2017, 16:54
 
Fecha de Ingreso: agosto-2014
Ubicación: barranquilla
Mensajes: 93
Antigüedad: 9 años, 8 meses
Puntos: 0
Respuesta: Crear base de datos simulación matriz forzada 5x7

Tome el ejemplo de rbczgz y lo pude generar con 5 niveles, pero como puedo controlar que sea forzada
primer nivel: 1
segundo nivel 7
tercer nivel 49
cuarto nivel 401
quinto nivel 2041
  #9 (permalink)  
Antiguo 11/02/2017, 04:21
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: Crear base de datos simulación matriz forzada 5x7

Hola josegaitan123,

A mi lo que se me ocurre es que compruebes que cada usuario tiene el máximo, si lo tiene, el siguiente se le coloca a quien corresponda y así sucesivamente.

Es una idea, no sé si te servirá...
  #10 (permalink)  
Antiguo 11/02/2017, 07:50
 
Fecha de Ingreso: agosto-2014
Ubicación: barranquilla
Mensajes: 93
Antigüedad: 9 años, 8 meses
Puntos: 0
Respuesta: Crear base de datos simulación matriz forzada 5x7

ok, gracias realizare una consulta que cuente los registros asociados a un codigo y hare una comparación con los valores correspodientes..
  #11 (permalink)  
Antiguo 11/02/2017, 22:42
 
Fecha de Ingreso: julio-2014
Mensajes: 334
Antigüedad: 9 años, 9 meses
Puntos: 30
Respuesta: Crear base de datos simulación matriz forzada 5x7

Te estas complicando la vida una barbaridad, sigue mi consejo (con respeto a los demás que opinaron, pero es que no son buenos conejos, si ofender). Esto ya lo resolví en su dia. La tabla de la base de datos que te han sugerido es un error fatal. Solo necesitas un campo mas en la tabla de usuarios, y ese campo extra es el del sponsor, y en ese campo o colocas la id o bien el usuario del sponsor, a tu eleccion.

No necesitas esa tabla en absoluto.

Veras que te resultará mas sencillo y podrás comenzar a hacer virguerías asi, como controlar una matriz forzada y mucho más (dependera de tu imaginacion).

Como se controla una matriz forzada, facil. Solo setea las variables patas, piernas o ramas (como tu gustes) y la variable niveles. Con el campo extra que te dije, y estas dos variables numericas, puedes controlar cualquier matriz con codigo.

Cuando un sponsor desee registrar a uno, haces una consulta a la tabla usuarios buscando por el código de sponsor, y si la cantidad de referidos es inferior a la variable pierna, pues se puede registrar en ese nivel, de lo contrario ya sabes donde colocarlo.

Y para los niveles, lo mismo, aunque deberas de utilizar un contador para ir guardando los niveles que tu script vaya recorriendo.

Un saludo.

PD: si no te estoy recomendando que sigas el consejo de otros usuarios y mucho menos trabajr con la tabla que te sugierieron es porque no estas teniendo en cuenta cómo vas a controlar a los referidos en el último nivel de cada estructura ya que éstos tienen niveles propios fuera de esas estructuras a las que pertenecen.

Última edición por Triby2; 11/02/2017 a las 22:51
  #12 (permalink)  
Antiguo 12/02/2017, 20:08
 
Fecha de Ingreso: agosto-2014
Ubicación: barranquilla
Mensajes: 93
Antigüedad: 9 años, 8 meses
Puntos: 0
Respuesta: Crear base de datos simulación matriz forzada 5x7

Buenas noches, gracias por sus comentarios que de verdad me han servido de mucho en mi desarrollo, con el escript de la base de datos sugerida inicialmente me funciono registrar en los niveles, pero se comporta de una manera infinita no he podido mejarla de una manera forzada y siento que me estoy enredando.

Señor triby2, la logica que propones me parece sencilla pero no he podido inicar tengo la siguiente estructura.

1. Una tabla datos con los campos id, cedula, cedaso, codigo, nombre

id: identificador unico del registro
cedula: identificacion del usuarios que se registra
cedaso: identificador del patrocinador o asociado
nombre: nombre del usuario

2. tengo una tabla matriz con la estructura anterior sugerida hasta cinco niveles

Funcionamiento del registro.

El usuario ingresa el código del patrocinador, la cédula, el nombre etc.

el sistema verifica si su cédula no esta registrada en la base de datos si no esta lo inserta en la tabla datos, genera un código tomando el id mayor de la tabla datos sumado con el código del patrocinador, se verifica con una consulta contando cuantos registro tiene en la tabla datos bajo su codigo, luego con estructura condicional comparo los valores de los de cada matriz forzada e ingreso los valores en la tabla datos.

PERO NO ME CONTROLA LA MATRIZ FORZADAS TODAS ESTAN QUEDANDO EN EL NIVEL 2.

Ayudenme con un ejemplo de tablas o algo asi para salir de este enredo porfavor..!
  #13 (permalink)  
Antiguo 12/02/2017, 20:54
 
Fecha de Ingreso: julio-2014
Mensajes: 334
Antigüedad: 9 años, 9 meses
Puntos: 30
Respuesta: Crear base de datos simulación matriz forzada 5x7

Mira, yo hoy pude solucionar un tema que me ha llevado una semana y media resolver, al final un colega de aquí del foro me hizo ver la luz que no habia visto antes por lo mismo que te está pasando a ti, llegamos a un punto que estamls tan bloqueados que simplemente no podemos pensar con claridad para poder ver otros puntos de vista.

Controlar un siste a de matriz forzada es de lo mas semcillo, lo complicado está en controlar una matriz NO forzada.

En mi comentario anterior te suegria que utilizases dos variables (ramas y niveles).

Cada una la seteas como te plazca, puede ser un binario o una matriz forzada 3x3, 25x30, 5x7, 7x5, como tu prefieras, el control va a ser lo mismo.

Código PHP:
$ramas 5;
$niveles 7
"el sistema verifica si su cédula no esta registrada en la base de datos, si no esta lo inserta en la tabla datos, genera un código tomando el id mayor de la tabla datos sumado con el código del patrocinador"

¿Por qué generar un código así? Simplemente deja que la tabla asigne el código automáticamente mediante la propiedad autoinrement "autoincrement" y de este módo ahorras posibles fallos futuros y líneas de código innecesarias.

"se verifica con una consulta contando cuantos registro tiene en la tabla datos bajo su codigo

Explicado de esa manera no estoy seguro de cómo haces ese proceso, pero de todas formas te muestro como lo hago yo.

Código PHP:
$referidos 'SELECT * FROM usuarios WHERE Sponsor = $id';

$refTotal count($referidos);
# Así se consigue la cantidad de referidos de primer nivel de ese Sponsor.

if ($refTotal != $ramas)
    
# Inserto el usuario en el espacio libre correspondiente de ese nivel
else
    
# Inserto el usuario en el espacio libre correspondiente en el proximo nivel con disponibilidad 
De esta manera ya controlo la matriz forzada. Lee mi anterior comentario a éste para controla la profundidad. Tambien debes de tener en cuenta la lógica que aplicarás cuando la matriz está llena.

Ese diseño de tabla para usuarios ya está bien para trabajar con redes y poder aplicar el ejemplo mio.

Si se quedan en el nivel 2 es porque no estás recorriendo toda la estructura. Para ello tienes que usar una función de recursividad para que haga el recorrido a esa estructura. Es decir, realizar el mismo proceso de comprobación de las ramas, después del "else"

Última edición por Triby2; 12/02/2017 a las 21:00
  #14 (permalink)  
Antiguo 13/02/2017, 14:05
 
Fecha de Ingreso: agosto-2014
Ubicación: barranquilla
Mensajes: 93
Antigüedad: 9 años, 8 meses
Puntos: 0
Respuesta: Crear base de datos simulación matriz forzada 5x7

Buenas tardes gracias por tu tiempo.

Estoy cada vez mas enredado con estoy, voy a colocar como lo tengo para comprendan lo que he echo uds me diran como lo puedo mejorar. SE QUE EL CORAZON DE ESTO ES EL DISEÑO DE LA BASE DE DATOS, si no esta bien diseñada no esta mal, el resto lo puedo conseguir desde la programación.

La idea es registro de afiliados en un sistema multinivel con matriz forzada de 5 x 7

Tengo la tabla llamada datos: En esta tabla guardo los datos básicos del afiliado ejemplo de registros en la tabla.



Tengo la tabla matriz: en esta tabla se almacena en que nivel se almacena el usuario en la matriz



En la trabla matriz voy guardando cada usuario en su nivel correspodiente, hasta el segundo nivel va bien, pero como inserto el registro 8 que corresponde al primer registro del tercer nivel de la matriz del cabeza de nivel 50

Última edición por josegaitan123; 13/02/2017 a las 14:42
  #15 (permalink)  
Antiguo 13/02/2017, 21:30
 
Fecha de Ingreso: julio-2014
Mensajes: 334
Antigüedad: 9 años, 9 meses
Puntos: 30
Respuesta: Crear base de datos simulación matriz forzada 5x7

Jose,

Tienes un sistema donde conoces la cantidad depersonas por cada nivel y tambien sabes la cantidad de niveles que permites.

Con lo cual sabes la cantidad de personas que pueden haber en toda la matriz, por eso necesitas esas variables que te comenté mas los contadores.

Con todo eso y una función recursiva puedes conseguir lomque buscas, pero necesitas calmarte para pensar bien en la función.

Sería algo como te ccompart en mi anterior comentsrioí. Aquí lo extenderé un poco más pero espero que te dé la idea de como hacerlo ya que es algo complicado para que funcione bien pero en sí es sencillo si se tiene clara la idea.

Código:
 ramas = 7
 niveles = 5

 NivelActual = 1

funcion consigueReferidos(id) {
  retorna 'SELECT * FROM usuarios WHERE sponsor = id'
}

funcion recorreMatriz(usuario) {
  # Así se consigue la cantidad de referidos de primer nivel del usuario 
  referidos = consigueReferidos(usuario[id])
  totalReferidos = count(referidos)

  si (totalReferidos != ramas)
    # Inserto el usuario en el espacio libre correspondiente de ese nivel
  else {
    # Indico en qué nivel estoy recorriendo la matriz del usuario principal
    NivelActual++
    
    si (NivelActual != niveles) {
      # Inserto el usuario en el espacio libre correspondiente en el proximo nivel con disponibilidad
    
      # consulto los referidos de primer nivel de cada referido directo obtenido
      foreach(referidos as referido)
          recorreMatriz(referido)
      } sino
        # lógica para guardar el usuario fuera de esta matriz actual
   }
}
Si sigues ese esquema y lo programas como te comparto, lo que haria esa función es colocarte al nuevo referido en la primera posición libre que encuentre en el nivel en que se encuentre en ese momento. Esto estaría funciona do con la tabla de usuarios como te comento a continaución.

El diseño de la tabla de usuarios esta bien siempre y cuando el campo codigo sea el id del usuario patrocinador y que ese id sea el mismo que el campo deid de la misma tabla, no como lo que has compartido.

Última edición por Triby2; 13/02/2017 a las 21:52
  #16 (permalink)  
Antiguo 14/02/2017, 13:44
 
Fecha de Ingreso: agosto-2014
Ubicación: barranquilla
Mensajes: 93
Antigüedad: 9 años, 8 meses
Puntos: 0
Respuesta: Crear base de datos simulación matriz forzada 5x7

Buenas tardes triby.

Gracia por tu tiempo. tengo unas preguntas para entender mejor tu recomendaciones.

1. La tabla de datos que yo propongo esta la que tu le llamas usuarios.?

2. Solo esa tabla es suficientes, o es necesario la tabla matriz que tome del ejemplo rbczgz

3. si es asi solo le agrego quearia asi.?

id cedula idsposor nombre
1 78456 50 JOSE GAITAN
2 78452 51 XXXXXXXXXX
3 79458 52 XXXXXXXXXX
4 77452 53 XXXXXXXXXX

-----------------------------------------------
  #17 (permalink)  
Antiguo 14/02/2017, 14:19
 
Fecha de Ingreso: julio-2014
Mensajes: 334
Antigüedad: 9 años, 9 meses
Puntos: 30
Respuesta: Crear base de datos simulación matriz forzada 5x7

en mi sistema yo solo tengo esa tabla, la de usuarios y sí es la que corresponde a "datos" para ti.

Solo que ese id de sponsor que tu utilizas aún no comprendo de dónde lo sacas, solo en el primero registro ya no entiendo nada, si JOSE GAITAN, es el primer usuario que se registró en el sistema, ¿cómo puede ser que su id de sponsor sea 50?, debería de ser 0 (sin sponsor) ya que al ser el primer usuario, por lógica, en ese momento de su registro, ni siquiera existía el usuario con id 2, con lo cual no entiendo ese 50 de dónde lo sacas.

En mi sistema yo le pongo como id de sponsor, el id de usuario.
  #18 (permalink)  
Antiguo 14/02/2017, 14:53
 
Fecha de Ingreso: agosto-2014
Ubicación: barranquilla
Mensajes: 93
Antigüedad: 9 años, 8 meses
Puntos: 0
Respuesta: Crear base de datos simulación matriz forzada 5x7

Buenas tardes triby.

Gracias por responder.

Es que yo tengo dos tablas datos y matriz, bueno ya estoy entendiendo tu lógica, solo bastaría una tabla como me los siguieres. la tabla seria asi.?

id cedula codigo nombre
1 78556 1 JOSE GAITAN
2 78557 1 PEDRO PEREZ
3 78558 1 JUAN POLO
4 78559 1 MARIO LOPEZ
5 78560 1 EDGAR PEREA
6 78561 1 MARIO GOMEZ
7 78562 1 MARCOS LUNA
8 78563 1 ANA MONSAVO
9 78564 2 MARIA TORRES
10 78565 2 MARTA GUTIERREZ
11 78566 2 KAIRED GAITAN

Me parece mas sencillo y optimizado en la ejecución, tengo una preguntas.

1. como identifico los niveles. por ejemplo
JOSE GAITAN esta en el nivel (1), debajo del esta PEDRO PEREZ con el codigo (2) que es el nivel (2) de (JOSE GAITAN y el nivel (1) de el emismo y asi sucesivamente hasta completar el arbol de la matriz

2. Como identifico los que están en el nivel (3), en el nivel (4) y en el nivel (5)


Como se muestra en la siguiente imagen. esta imagen solo muestra tres niveles.
El código (1) nivel 1 cabeza de nivel.
El código (2) es el nivel 2 de el código (1) y es su nivel 1.
El código (9) es el nivel 3 del código (1), Nivel 2 del código (2) y nivel 1 de si mismo y así sucesivamente hasta el infinito



Última edición por josegaitan123; 14/02/2017 a las 16:08
  #19 (permalink)  
Antiguo 14/02/2017, 16:56
 
Fecha de Ingreso: agosto-2014
Ubicación: barranquilla
Mensajes: 93
Antigüedad: 9 años, 8 meses
Puntos: 0
Respuesta: Crear base de datos simulación matriz forzada 5x7

Me orientas por favor, si voy por buen camino!!!
  #20 (permalink)  
Antiguo 14/02/2017, 17:01
 
Fecha de Ingreso: julio-2014
Mensajes: 334
Antigüedad: 9 años, 9 meses
Puntos: 30
Respuesta: Crear base de datos simulación matriz forzada 5x7

Cita:
Iniciado por josegaitan123 Ver Mensaje
Buenas tardes triby.

Gracias por responder.

Es que yo tengo dos tablas datos y matriz, bueno ya estoy entendiendo tu lógica, solo bastaría una tabla como me los siguieres. la tabla seria asi.?

id cedula codigo nombre
1 78556 1 JOSE GAITAN
2 78557 1 PEDRO PEREZ
3 78558 1 JUAN POLO
4 78559 1 MARIO LOPEZ
5 78560 1 EDGAR PEREA
6 78561 1 MARIO GOMEZ
7 78562 1 MARCOS LUNA
8 78563 1 ANA MONSAVO
9 78564 2 MARIA TORRES
10 78565 2 MARTA GUTIERREZ
11 78566 2 KAIRED GAITAN

1. como identifico los niveles. por ejemplo
JOSE GAITAN esta en el nivel (1), debajo del esta PEDRO PEREZ con el codigo (2) que es el nivel (2) de (JOSE GAITAN y el nivel (1) de el emismo y asi sucesivamente hasta completar el arbol de la matriz

2. Como identifico los que están en el nivel (3), en el nivel (4) y en el nivel (5)
Como se muestra en la siguiente imagen. esta imagen solo muestra tres niveles.
El código (1) nivel 1 cabeza de nivel.
El código (2) es el nivel 2 de el código (1) y es su nivel 1.
El código (9) es el nivel 3 del código (1), Nivel 2 del código (2) y nivel 1 de si mismo y así sucesivamente hasta el infinito
Desarrolla la función que te sugerí y tendrás tu respuesta, hasta que no lo hagas no podemos seguir avanzando.
  #21 (permalink)  
Antiguo 14/02/2017, 17:05
 
Fecha de Ingreso: agosto-2014
Ubicación: barranquilla
Mensajes: 93
Antigüedad: 9 años, 8 meses
Puntos: 0
Respuesta: Crear base de datos simulación matriz forzada 5x7

ok, Iniciare el desarrollo y luego te mostrare el resultado, si encuentro inconvenientes te pedire tu ayuda!!
  #22 (permalink)  
Antiguo 14/02/2017, 17:13
 
Fecha de Ingreso: julio-2014
Mensajes: 334
Antigüedad: 9 años, 9 meses
Puntos: 30
Respuesta: Crear base de datos simulación matriz forzada 5x7

Cita:
Iniciado por josegaitan123 Ver Mensaje
ok, Iniciare el desarrollo y luego te mostrare el resultado, si encuentro inconvenientes te pedire tu ayuda!!
Perfecto, y sí! se me olvidó decirte que la tabla que compartiste ahora es la correcta.
  #23 (permalink)  
Antiguo 16/02/2017, 16:24
 
Fecha de Ingreso: agosto-2014
Ubicación: barranquilla
Mensajes: 93
Antigüedad: 9 años, 8 meses
Puntos: 0
Respuesta: Crear base de datos simulación matriz forzada 5x7

Buenas tardes triby.

He iniciado el desarrollo de la función, si la hago de esta forma me devuelve la cantidad de registro según la consulta.

Código PHP:
 function consigueReferidos($con,$id) {
         
$referidos=mysqli_query($con,"SELECT * FROM usuario WHERE id = $id");
         
$totalReferidos=count($referidos);
         echo 
$totalReferidos;
        return;
  } 

De esta forma me marca erro en la segunda funcion. Fatal error: Call to undefined function usuario() in

Código PHP:

 
function consigueReferidos($con,$id) {
  
mysqli_query($con,"SELECT * FROM usuario WHERE id = $id");
  return;
}


 function 
recorreMatriz($usuario) {
  
# Así se consigue la cantidad de referidos de primer nivel del usuario 
  
$referidos consigueReferidos($usuario[$id]);
  
$totalReferidos count($referidos);
  echo 
$totalReferidos;
//el resto aqui.....


en que me estare equivocando

Última edición por josegaitan123; 16/02/2017 a las 17:03
  #24 (permalink)  
Antiguo 16/02/2017, 22:06
 
Fecha de Ingreso: julio-2014
Mensajes: 334
Antigüedad: 9 años, 9 meses
Puntos: 30
Respuesta: Crear base de datos simulación matriz forzada 5x7

Hombre es que no puedes ponerte a trabajar con el resultado de un query si no sabes cómo te está devolviendo ese resultado!

Solo estás enviando el query y éste está devolviendo un arreglo que no un array. Además, estás diciéndole a la función que te devuleva la cantidad de usuarios (un número entero, no los registros) y de ahí le estás asignando ese número a la variable $referidos (no los registros).

Y en $totalreferidos está recibiendo el valor 1 ya que count(count(consigueReferidos($usuarios['id'])) es igual a 1.

consigueReferidos() tiene que devolver un array (mysqli_fetch_row()) con todos los referidos de ese patrocinador. Haciéndolo así, la segunda función funcionará correctamente y no te saltará ningún fallo con lo cual el echo te imprimrá correctamente lo que le estás enviando. Después te faltará el resto de la función.
  #25 (permalink)  
Antiguo 17/02/2017, 09:13
 
Fecha de Ingreso: agosto-2014
Ubicación: barranquilla
Mensajes: 93
Antigüedad: 9 años, 8 meses
Puntos: 0
Respuesta: Crear base de datos simulación matriz forzada 5x7

Gracias triby por tu explicación

Probare nuevamente
  #26 (permalink)  
Antiguo 17/02/2017, 14:50
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Crear base de datos simulación matriz forzada 5x7

Cita:
Iniciado por josegaitan123 Ver Mensaje
Gracias triby por tu explicación

Probare nuevamente
¡Epa!, que Triby solo hay uno, el compañero tiene un numerito al final.
__________________
- León, Guanajuato
- GV-Foto
  #27 (permalink)  
Antiguo 17/02/2017, 16:07
 
Fecha de Ingreso: agosto-2014
Ubicación: barranquilla
Mensajes: 93
Antigüedad: 9 años, 8 meses
Puntos: 0
Respuesta: Crear base de datos simulación matriz forzada 5x7

jajaja a :
Disculpa por confundir triby2 y triby

Despues de analizar y probar de tantas formas he entendido la logica de la funcion pero no consigo que me devuelva el resultado.

Gracias por su tiempo... Buscare otra solución debe haberla
  #28 (permalink)  
Antiguo 18/02/2017, 02:07
 
Fecha de Ingreso: julio-2014
Mensajes: 334
Antigüedad: 9 años, 9 meses
Puntos: 30
Respuesta: Crear base de datos simulación matriz forzada 5x7

Cita:
Iniciado por josegaitan123 Ver Mensaje
jajaja a :
Disculpa por confundir triby2 y triby

Despues de analizar y probar de tantas formas he entendido la logica de la funcion pero no consigo que me devuelva el resultado.

Gracias por su tiempo... Buscare otra solución debe haberla
Como tu desees aunque ya te digo que esa es la manera, si lees como recorrer un array en profundidad, veras que solo hay una forma, recursividad, y es la funcion que te comparti y estas por buen camino, en breve publicaré un site para mi script donde podras ver como funciona haciendolo de la,manera que te estoy comentando.
  #29 (permalink)  
Antiguo 18/02/2017, 10:35
 
Fecha de Ingreso: agosto-2014
Ubicación: barranquilla
Mensajes: 93
Antigüedad: 9 años, 8 meses
Puntos: 0
Respuesta: Crear base de datos simulación matriz forzada 5x7

Buenos dias.

No me quiero dar por vencido, Este es el reto que debe afrontar todo programador.

Una pregunta amigo!!

Cúal es el parámetro de la segunda función?, hay es donde me sale error, el ejemplo menciona "usuario" ¿Es al nombre de la tabla?
  #30 (permalink)  
Antiguo 18/02/2017, 15:04
 
Fecha de Ingreso: julio-2014
Mensajes: 334
Antigüedad: 9 años, 9 meses
Puntos: 30
Respuesta: Crear base de datos simulación matriz forzada 5x7

el parametro de la segunda función ($usuario), es el miembro al que estás consultando, cuando la función se llama a sí misma, le está pasndo el referido que le toca dentro de la variable $referidos, y esa es la segunda parte de la funcion, la primera ya la hiciste y es correcta

Etiquetas: matriz, registro, usuario
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 00:47.