Foros del Web » Programando para Internet » PHP »

Problema, Sistemas de amigos

Estas en el tema de Problema, Sistemas de amigos en el foro de PHP en Foros del Web. Hola, estoy intentando montar un sistema de amigos pero no llego a hacerlo como quiero, no tengo muchas ideas. Podria hacerlo de esta manera: organizar ...
  #1 (permalink)  
Antiguo 18/12/2013, 08:53
 
Fecha de Ingreso: enero-2008
Mensajes: 80
Antigüedad: 16 años, 3 meses
Puntos: 1
Problema, Sistemas de amigos

Hola, estoy intentando montar un sistema de amigos pero no llego a hacerlo como quiero, no tengo muchas ideas.
Podria hacerlo de esta manera:

organizar la base de datos asi: Id, usuario1(el usuario),usuario2(la persona agregada) y el estado de la amistad. Si lo hago de esta manera tendre tablas innecesarias ya que si por ejemplo pepe agrega a maria se crearan 2 tablas :

id usu1 usu2
1 pepe maria
2 maria pepe

Sinceramente prefiero que se creé una tabla solo, pero no se muy bien como hacerlo.
La idea seria seleccionar en la tabla amigos el usuario1 y usuario2 con un WHERE donde este el nickname del usuario logueado, despues mostrar el usuario que no sea el nickname. pero estoy bloqueado, alguien me 'alumbra' un poco?

Código:
	$result = mysqli_query($conexion,"SELECT * FROM amigos WHERE amigos_usuario1='$usuarios_nickname' OR amigos_usuario2='$usuarios_nickname'");

	echo "<table border='2'>";
	echo "</tr>";

	while ($row = mysqli_fetch_array($result)){
    echo "<tr>";
	echo "<td>".$row["amigos_usuario1"]."</td>";
	echo "<td>".$row["amigos_usuario2"]."</td>";
    echo "</tr>";
	}

echo "</table>";
  #2 (permalink)  
Antiguo 18/12/2013, 09:06
Avatar de rottenp4nx  
Fecha de Ingreso: octubre-2012
Ubicación: Santiago
Mensajes: 417
Antigüedad: 11 años, 6 meses
Puntos: 36
Respuesta: Problema, Sistemas de amigos

Para mí es mejor que crees 2 tablas

Usuario
-Nick PK
-Nombre
-Edad
-etc etc

Amigos
-amigo1 fk de Usuarios
-amigo2 fk de Usuarios

Y entre las 2 FK de Amigos, hagas una Primary Key Compuesta, te saldrá mucho más fácil el control de esto

Saludos
  #3 (permalink)  
Antiguo 20/12/2013, 06:25
 
Fecha de Ingreso: mayo-2009
Ubicación: Japon
Mensajes: 60
Antigüedad: 14 años, 11 meses
Puntos: 12
Respuesta: Problema, Sistemas de amigos

suponiendo que tienes una tabla "común" de usuarios, la cual tenga un campo primario id único, has una tabla en la cual se generen las conexión mediante este id

has una tabla con los campos [ id , p1, p2, status ], has un index único con "p1", "p2" y "status" para ganar velocidad en las cargas/busquedas

id = numero del registro
p1 = usuario que propuso la amistado
p2 = usuario invitado a tener amistad
status = estado de la petición

En status usa un tinyint(1) con valores [ -1, 0 ,1, 2 ]

-1 = bloqueado
0 = no visto/ chequeado por el invitado
1 = rechazado
2 = aceptado

amigos = SELECT count(*) FROM tabla WHERE (p1 = user_id OR p2 = user_id) AND status = 2
peticiones = SELECT count(*) FROM tabla WHERE (p1 = user_id OR p2 = user_id) AND status = 0

el resto ya puedes imaginártelo...


de esta forma no tienes que crear un record para cada parte, evitas duplicados y nodos sueltos
  #4 (permalink)  
Antiguo 20/12/2013, 08:57
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 16 años, 8 meses
Puntos: 194
Respuesta: Problema, Sistemas de amigos

Cita:
Iniciado por GaMeouT Ver Mensaje
Hola, estoy intentando montar un sistema de amigos pero no llego a hacerlo como quiero, no tengo muchas ideas.
Podria hacerlo de esta manera:

organizar la base de datos asi: Id, usuario1(el usuario),usuario2(la persona agregada) y el estado de la amistad. Si lo hago de esta manera tendre tablas innecesarias ya que si por ejemplo pepe agrega a maria se crearan 2 tablas :

id usu1 usu2
1 pepe maria
2 maria pepe
Creo que necesitas aclarar algunos términos antes de siquiera pensar en tu sistema. Una "Tabla" es la contenedora de datos, no se crean tablas cada vez que agregas amigos, si no "registros", "filas" o "rows"
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives

Etiquetas: mysql, select, sistemas, tabla
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 07:17.