Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Relacion entre usuarios

Estas en el tema de Relacion entre usuarios en el foro de PHP en Foros del Web. Hola a todos, le comento que tengo que hacer un sistema en cual al ingresar usuario se relaciones si con familiares o no. Por un ...
  #1 (permalink)  
Antiguo 29/10/2017, 18:46
Avatar de zreep  
Fecha de Ingreso: octubre-2009
Ubicación: Argentina
Mensajes: 534
Antigüedad: 14 años, 6 meses
Puntos: 12
Pregunta Relacion entre usuarios

Hola a todos, le comento que tengo que hacer un sistema en cual al ingresar usuario se relaciones si con familiares o no. Por un lado eso ya esta hecho. Pero al ingresar la cantidad de hijos, tengo un campo en cual coloco el numero de hijos y abajo tengo que poner los nombres. Si son dos, tengo que agregar dos input, pero como hago para guardar ese dato en la base de datos. Se entiende lo que quiero hacer?

Espero me ayuden. Gracias
__________________
Zreep
  #2 (permalink)  
Antiguo 29/10/2017, 19:45
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Relacion entre usuarios


Hola, pues actualmente como se maneja la relación entre los familiares?
Podría ser del mismo modo, un hijo viene a ser un familiar.
Pero si se quiere manejar diferente, dos opciones:
1. En el campo de hijo se podría guardar los nombres de los hijos separados por coma,
o incluso un objeto json (en cuyo caso el campo pasaría a ser text, o incluso, dependiendo de tu motor de bd y versión, podría ser tipo json). Y luego, al querer mostrar la cantidad, pues se haría un count de estos elementos.
2. Manejar una tabla aparte para los hijos, heredando el id del familiar principal.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #3 (permalink)  
Antiguo 29/10/2017, 20:04
Avatar de zreep  
Fecha de Ingreso: octubre-2009
Ubicación: Argentina
Mensajes: 534
Antigüedad: 14 años, 6 meses
Puntos: 12
Respuesta: Relacion entre usuarios

Claro, hago una herencia del vinculo familia, en este caso, padres y cónyuge. Con los hijos también también puedo hacer lo mismo. Mi primera opción fue agregar a los hijos en textarea, ya que puede haber familias que puedan tener mas 2 hijos. Voy a probar con eso.
Gracias mortiprogramador
__________________
Zreep
  #4 (permalink)  
Antiguo 30/10/2017, 09:54
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Relacion entre usuarios

Lo del textarea es una buena solución, el problema esta del lado del cliente, y que entienda que el salto de linea separa hijos, se que es algo tal vez tonto, pero tienes que ponerte en los zapatos de el.

Una buena opcion, es a travez de un text input, y con el evento onchange se se llene una lista, ergo borras el valor del text input algo así

Código Javascript:
Ver original
  1. function fillSonsList(list, fill, name){
  2. var filler = document.getElementById(fill);
  3. var val = filler.value;
  4. filler.value = "";
  5.  
  6. var input = document.createElement("input");
  7. input.setAttribute("type", "text"); //text type input to see value
  8. input.setAttribute("value", val); //value of input
  9. input.setAttribute("readonly", ""); //disable input to changes
  10. input.setAttribute("name", name+"[]"); //set array of inputs
  11. input.setAttribute("class", "some-class"); //to add styles i guess?
  12. document.getElementById(list).appendChild(input);    
  13. }

Parametros:
list: el elemento html a llenar
fill: el input con que llenas la lista
name: el nombre que le darás al input para que sea enviado a php

Ejemplo

Código HTML:
Ver original
  1. <input type="text" onchange="fillSonsList('sons-list', this.id, 'sons');" />
  2. <form id="sons-list"></form>

Cual es el chiste de esto?

Que en esta línea
Código Javascript:
Ver original
  1. input.setAttribute("name", name+"[]"); //set array of inputs
Se va agregando inputs así

Código HTML:
Ver original
  1. <input name="foo[]" />
  2. <input name="foo[]" />
  3. <input name="foo[]" />

Y en php obtienes un arreglo de esos foo

Código RETURN:
Ver original
  1. ["foo"] => array(N) { [0]=> "var1" [1]=> "var2" [2]=> "var3", ... , [N-1]=> "varN-1" [N]=> "varN" }

Saludos

P.S: faltaría un botoncito para eliminar un hijo si es mal escrito, pero eso sería tarea para ti si es que te gusta mi propuesta
  #5 (permalink)  
Antiguo 30/10/2017, 10:51
Avatar de zreep  
Fecha de Ingreso: octubre-2009
Ubicación: Argentina
Mensajes: 534
Antigüedad: 14 años, 6 meses
Puntos: 12
Respuesta: Relacion entre usuarios

Gracias alvaro_trewhela, había cosas que no pensé. Gracias nuevamente por la info y voy a poner en marcha tu consejo.

pd: seguro voy a hacer otras preguntas... es un trabajo largo... je
__________________
Zreep
  #6 (permalink)  
Antiguo 30/10/2017, 19:31
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Relacion entre usuarios

Quiero hacer un fix a la funcion, deje como constante el atributo class:

Código Javascript:
Ver original
  1. input.setAttribute("class", "some-class"); //to add styles i guess?

Es myt util para darle estilos a los inputs que sea la clase que tu necesites y no meter mano a la funcion, habría que quitar esa línea hacer un condicional, por si no fuera necesario darle una clase (que es raro, pero excluyente). y agregar un parametro a la función, le cambie el nombre a la funcion para que sea más general, aqui el fix:

Código Javascript:
Ver original
  1. function fill_list(list, fillerID, name, someClass){
  2. var filler = document.getElementById(fillerID);
  3. var val = filler.value;
  4. filler.value = "";
  5.  
  6. var input = document.createElement("input");
  7. input.setAttribute("type", "text"); //text type input to see value
  8. input.setAttribute("value", val); //value of input
  9. input.setAttribute("readonly", ""); //avoid input changes
  10. input.setAttribute("onfocus", "this.blur()"); //to avoid focus
  11. input.setAttribute("name", name+"[]"); //set array of inputs
  12.  
  13. if(someClass != null){
  14. input.setAttribute("class", someClass); //to add styles i guess?
  15. }
  16.  
  17. document.getElementById(list).appendChild(input);
  18. }

Entonces lo usas así

Código HTML:
Ver original
  1. <input onchange="fill_list('theList', this.id, 'sons', 'sonsInputs');" />
  2. <element id="theList"></element>

Si no quieres darles clases solo quita el último parámetro

Código HTML:
Ver original
  1. <input onchange="fill_list('theList', this.id, 'sons');" />
  2. <element id="theList"></element>

Edito otro fix, agrego evento focus y gatillar onblur a los inputs para deseleccionar automaticamente, ya que al ser readonly de todas maneras al hacer click en los inputs aparece el cursor de texto (barrita parpadeante), esto se arreglaría con disabled, el problema con este atributo es que no se envia a php.

Ahora si, saludos

Última edición por alvaro_trewhela; 31/10/2017 a las 08:18
  #7 (permalink)  
Antiguo 31/10/2017, 16:31
Avatar de zreep  
Fecha de Ingreso: octubre-2009
Ubicación: Argentina
Mensajes: 534
Antigüedad: 14 años, 6 meses
Puntos: 12
Respuesta: Relacion entre usuarios

Muchas gracias alvaro_trewhela... ahora tengo que ir por otra pregunta... je
__________________
Zreep

Etiquetas: nombre, relacion, usuarios
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 12:17.