Foros del Web » Programando para Internet » PHP »

Problema con imprimir lista perfil

Estas en el tema de Problema con imprimir lista perfil en el foro de PHP en Foros del Web. Hola como andan amigos . soy nuevo en el foro lo encontre googleando y queria que me ayuden con un problema en php .- bueno ...
  #1 (permalink)  
Antiguo 11/12/2011, 01:40
 
Fecha de Ingreso: diciembre-2011
Mensajes: 5
Antigüedad: 12 años, 4 meses
Puntos: 0
Exclamación Problema con imprimir lista perfil

Hola como andan amigos . soy nuevo en el foro lo encontre googleando y queria que me ayuden con un problema en php

.- bueno yo estoy empezando un script de juegos pero con un mini sistema de amigos pero tengo un problema en imprimir la lista de amigo osea ejemplo
si yo entro al usuario URL localhost/perfil?id=1 y este usuario agrega un amigo con otro id localhost/perfil?id=2 pero cuando yo quiero imprimir la lista de amigos osea yo voy a perfil 1 (localhost/perfil?id=1 ) y veo que tiene de amigo al perfil 2 pero si yo voy al perfil 2 (localhost/perfil?id=2 ) no se ven los amigos
OTRO EJEMPLO

si el usuario 1 agrega al usuario 3 y el 2 tambien agrega al usuario 3

en el perfil 1 se ve de amigo que tiene al usuario 3 igual que en el usuario 2 PERO en el usuario 3 se tendria que ver que tiene de amigo al usuario 1 y 2 pero no no se ve nada nose que estoy haciendo mal

aca le dejo los archivos a ver si me pueden ayudar

Perfil.php

Código PHP:
<?php
/* obtenes el id de la url */
$id=$_GET['id'];
/* perfil.php?id=$id */

/*buscamos el usuario*/
$ukery=$db->query("SELECT * 
FROM users 
WHERE {$puser}"
);
/*Comprobamos si existe*/
if(!$db->num_rows($ukery)){
no_error("El usuario no existe");
}
/*mostramos*/
$kery=$db->fetch_array($ukery);
$autor=$kery['id'];

$db->free_result($ukery);

/*Imprimimos la lista de amigos aca esta el problema :( */
$amigos mysql_query("SELECT s.id_user, s.id_amigo , u.*
FROM (amigos as s, usuarios as u)
WHERE s.id_user='{$id}' and s.id_amigo=u.id
ORDER BY s.id_user ASC
LIMIT 5"
);
while(
$row mysql_fetch_array($amigos)){

echo
'<li><img src="'.$row['avatar'].'" style="max-width:60px"> '.$row['nombre'].'</li>';
    
}
mysql_free_result($amigos);
?>
base de datos
tabla amigos

Cita:
CREATE TABLE IF NOT EXISTS `amigos` (
`a_id` int(11) NOT NULL AUTO_INCREMENT,
`id_user` int(11) NOT NULL,
`id_amigo` int(11) NOT NULL,
`aprobado` smallint(1) NOT NULL DEFAULT '0',
`fecha` int(11) NOT NULL,
PRIMARY KEY (`a_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=58 ;
ID_USER : esta columna es del usuario que agrega
ID_amigo : esta columna es del usuario al que agrego

tabla usuarios

Código HTML:
CREATE TABLE IF NOT EXISTS `users` (
  `id` int(20) NOT NULL AUTO_INCREMENT,
  `nombre` varchar(40) NOT NULL DEFAULT '',
  `nick` varchar(25) NOT NULL DEFAULT '',
  `password` varchar(40) NOT NULL DEFAULT '',
  `apellido` varchar(40) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`),
  KEY `id` (`id`) USING BTREE
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC AUTO_INCREMENT=100 ;

Espero su ayuda. capas que es un problema de where (filtrado) en la consulta que estoy haciendo o algo estoy haciendo mal seguro. espero a ver sido claro un gusto y gracias de antemano

Última edición por jonath4n; 11/12/2011 a las 02:29
  #2 (permalink)  
Antiguo 11/12/2011, 03:32
Avatar de jorgelpadronb  
Fecha de Ingreso: agosto-2011
Ubicación: Cuba
Mensajes: 281
Antigüedad: 12 años, 8 meses
Puntos: 37
Respuesta: Problema con imprimir lista perfil

Hola. Creo que es un problema de lógica. Por ejemplo, para el usuario 1, en la BD no se reflejan igual las amistades de usuario 1 iniciadas por él mismo qu las iniciadas por otro usuario.

Caso 1) Si user1 le propone amistad a user2, entonces user1 es amigo de user2.
Caso 2) Si user2 le propone amistad a user1, entonces también user1 y user2 son amigos.

Entonces si yo quiero la lista completa de amigos de user1, tendría que incluir tanto las amistades icniciadas por user1 como las amistades propuestas a user1 por otros usuarios.

Mira esta tabla de hipotética de amistades:

Propone Acepta
user1 user2
user1 user3
user4 user1
user5 user1

Aquí user uno inició solamente 2 amistades, pero en realidad las cuatro amistades reflejadas en la tabla involucran a user1. Por tanto si yo al construir la lista de amigos incluyo solamente los iniciados por user1, estoy excluyendo otras amistades de user1 que no fueron iniciadas por él.

Hay que pensar en una consulta que recoja los datos atendiendo a este detalle, para que no deje amigos fuera de la lista. Pienso que sea eso lo que pasa.

Saludos
__________________
Los hombres pequeños, nunca se sienten pequeños; los hombres grandes, nunca se sienten grandes.

No sé quien fué el que dijo eso, pero está bueno.
  #3 (permalink)  
Antiguo 11/12/2011, 03:35
 
Fecha de Ingreso: diciembre-2011
Mensajes: 5
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: Problema con imprimir lista perfil

Cita:
Iniciado por jorgelpadronb Ver Mensaje
Hola. Creo que es un problema de lógica. Por ejemplo, para el usuario 1, en la BD no se reflejan igual las amistades de usuario 1 iniciadas por él mismo qu las iniciadas por otro usuario.

Caso 1) Si user1 le propone amistad a user2, entonces user1 es amigo de user2.
Caso 2) Si user2 le propone amistad a user1, entonces también user1 y user2 son amigos.

Entonces si yo quiero la lista completa de amigos de user1, tendría que incluir tanto las amistades icniciadas por user1 como las amistades propuestas a user1 por otros usuarios.

Mira esta tabla de hipotética de amistades:

Propone Acepta
user1 user2
user1 user3
user4 user1
user5 user1

Aquí user uno inició solamente 2 amistades, pero en realidad las cuatro amistades reflejadas en la tabla involucran a user1. Por tanto si yo al construir la lista de amigos incluyo solamente los iniciados por user1, estoy excluyendo otras amistades de user1 que no fueron iniciadas por él.

Hay que pensar en una consulta que recoja los datos atendiendo a este detalle, para que no deje amigos fuera de la lista. Pienso que sea eso lo que pasa.

Saludos
Claro esa misma consulta estoy buscando de hacer y se me hizo un remolino en el coco y no me sale gracias por la respuesta muy buena ayuda a entender lo que quiero explicar
  #4 (permalink)  
Antiguo 11/12/2011, 03:40
Avatar de jorgelpadronb  
Fecha de Ingreso: agosto-2011
Ubicación: Cuba
Mensajes: 281
Antigüedad: 12 años, 8 meses
Puntos: 37
Respuesta: Problema con imprimir lista perfil

En el caso hipotético que te puse la consulta sería:

SELECT * FROM Amigos WHERE Propone=user1 OR Acepta=user1

Esto te da la lista completa de amistades de user1, tanto las iniciadas por él como las propuestas a él por otros usuarios.

Trata de traspolar este ejemplo a tu caso en concreto.
__________________
Los hombres pequeños, nunca se sienten pequeños; los hombres grandes, nunca se sienten grandes.

No sé quien fué el que dijo eso, pero está bueno.

Última edición por jorgelpadronb; 11/12/2011 a las 03:49
  #5 (permalink)  
Antiguo 11/12/2011, 04:42
 
Fecha de Ingreso: diciembre-2011
Mensajes: 5
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: Problema con imprimir lista perfil

Cita:
Iniciado por jorgelpadronb Ver Mensaje
En el caso hipotético que te puse la consulta sería:

SELECT * FROM Amigos WHERE Propone=user1 OR Acepta=user1

Esto te da la lista completa de amistades de user1, tanto las iniciadas por él como las propuestas a él por otros usuarios.

Trata de traspolar este ejemplo a tu caso en concreto.
Gracias por responderme compañero pero tengo un problema tengo que agregarle las columnas de la tabla de usuarios como las podria agregar

tu ejemplo
SELECT * FROM Amigos WHERE Propone=user1 OR Acepta=user1
ahora yo le tendria que agregar la id de la tabla usuarios algo asi asi muestro el nombre avatar y esas cosas pero estoy medio perdido
Propone=u.id and Acepta=u.id

disculpa por preguntar es que no soy un avanzado estoy aprendiendo con la practica de estas cosas pero ahora me estanque con esto y no lo puedo dejar hasta solucionarlo :(
  #6 (permalink)  
Antiguo 11/12/2011, 23:53
Avatar de jorgelpadronb  
Fecha de Ingreso: agosto-2011
Ubicación: Cuba
Mensajes: 281
Antigüedad: 12 años, 8 meses
Puntos: 37
Respuesta: Problema con imprimir lista perfil

Prueba esta consulta aver si te funciona
Código PHP:
Ver original
  1. $userid = 1; //este es el id del usuario actual
  2. $SQL="SELECT amigos.*,users.* FROM amigos,users WHERE amigos.id_user=$userid OR amigos.id_amigo=$userid"; //esta es la SQL para extraer los amigos del usuario actual

Saludos
__________________
Los hombres pequeños, nunca se sienten pequeños; los hombres grandes, nunca se sienten grandes.

No sé quien fué el que dijo eso, pero está bueno.

Etiquetas: lista, listado, mysql
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:07.