Foros del Web » Programando para Internet » PHP »

Problema al obtener datos

Estas en el tema de Problema al obtener datos en el foro de PHP en Foros del Web. Hola a todos, tengo el siguiente problema: Cuento con una tabla users y una tabla friends . Esta última está organizada de la siguiente manera: ...
  #1 (permalink)  
Antiguo 02/03/2011, 18:22
 
Fecha de Ingreso: agosto-2009
Mensajes: 349
Antigüedad: 14 años, 9 meses
Puntos: 8
Problema al obtener datos

Hola a todos,

tengo el siguiente problema:

Cuento con una tabla users y una tabla friends. Esta última está organizada de la siguiente manera:

id (autoincrementable)
user1 (ID de quien envía la solicitud)
user2 (ID de quien recibe la solicitud)
valid (booleano)


Y la tabla users entre otros datos almacena el id de usuario. Entonces, cuando un usuario se logea guardo su ID en una variable SESSION. Ahora lo que quiero hacer es mostrar los nicks de los amigos del usuario que hizo login.

Ya que el ID de usuario puede estar en user1 o user2 hago la siguiente consulta:

Código PHP:
Ver original
  1. $id = $_SESSION['id'];
  2.  
  3. $query = mysql_query("SELECT user1,user2 FROM friends WHERE user1='".$id."' OR user2='".$id."' AND valid=1") or die(mysql_error());
  4.  
  5. while ($friend = mysql_fetch_array($query)) {
  6.    
  7.         if($friend['user1'] == $id) {
  8.          
  9.            /* El id del amigo es el campo user2 */
  10.  
  11.         } else {
  12.  
  13.            /* El id del amigo es el campo user1 */
  14.  
  15.         }
  16.    
  17. }

Hasta hay me va perfecto. Ahora necesito obtener el nick de cada amigo (campo user de la tabla users) pero no tengo idea de como hacerlo.

Alguna idea?
  #2 (permalink)  
Antiguo 02/03/2011, 18:53
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Problema al obtener datos

Seria tema de base de datos, pero tienes que hacer un JOIN para unir esa tabla con la tabla que contiene la información de los usuarios, en este caso el nick.
  #3 (permalink)  
Antiguo 02/03/2011, 18:55
Avatar de p3rikl3s  
Fecha de Ingreso: febrero-2009
Ubicación: Valencia
Mensajes: 216
Antigüedad: 15 años, 2 meses
Puntos: 9
Respuesta: Problema al obtener datos

Intenta con esta consulta usando INNER JOIN:

Código PHP:
SELECT FROM friends INNER JOIN users ON friends.user1 users.id OR ON friends.users2=users.id WHERE friends.valid=
Saludos!
__________________
También me hago llamar Tropiburguer. Sígueme en twitter: @tropiburguer
  #4 (permalink)  
Antiguo 02/03/2011, 19:18
 
Fecha de Ingreso: agosto-2009
Mensajes: 349
Antigüedad: 14 años, 9 meses
Puntos: 8
Respuesta: Problema al obtener datos

Cita:
Iniciado por p3rikl3s Ver Mensaje
Intenta con esta consulta usando INNER JOIN:

Código PHP:
SELECT FROM friends INNER JOIN users ON friends.user1 users.id OR ON friends.users2=users.id WHERE friends.valid=
Saludos!
Gracias por tu respuesta!

Aún no entiendo mucho de sintaxis asi que no conocía esa función. No logro entender el ejemplo que me diste, especificamente esta parte:

friends.user1 = users.id

Me parece que, la idea sería primero saber cuáles son los IDs de los amigos del usuario logeado pero no se cómo. El problema es que, aveces el ID del usuario logeado esta en el campo user1, aveces en el campo user2.

Disculpa la ignorancia. Espero que puedas ayudarme.
  #5 (permalink)  
Antiguo 02/03/2011, 19:36
Avatar de p3rikl3s  
Fecha de Ingreso: febrero-2009
Ubicación: Valencia
Mensajes: 216
Antigüedad: 15 años, 2 meses
Puntos: 9
Respuesta: Problema al obtener datos

INNER JOIN no hace mas que una unión interna, en este caso 2 tablas. Te invito profundizar mas sobre sintaxis SQL

Por otro lado, te pido disculpas pues en la respuesta anterior falto algo importante:

Código PHP:
SELECT FROM friends INNER JOIN users ON friends.user1 users.id OR ON friends.users2=users.id WHERE (friends.user1=$id OR friends.user2=$id) OR friends.valid=

Esto solo recrea una forma de hacer lo que necesitas. Lo correcto es que lo pruebes y profundices mas acerca del tema.


Saludos!
__________________
También me hago llamar Tropiburguer. Sígueme en twitter: @tropiburguer
  #6 (permalink)  
Antiguo 02/03/2011, 19:50
 
Fecha de Ingreso: agosto-2009
Mensajes: 349
Antigüedad: 14 años, 9 meses
Puntos: 8
Respuesta: Problema al obtener datos

EDIT:

Separé ambas sintaxis y logré lo que necesitaba. Ahora tengo otro problema pero crearé un nuevo tema ya que no va aqui. Gracias por tu ayuda!

Última edición por kenproxd; 03/03/2011 a las 08:55

Etiquetas: Ninguno
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 21:12.