Ver Mensaje Individual
  #3 (permalink)  
Antiguo 16/03/2008, 19:37
Avatar de jpinedo
jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Re: Problema while

El primer "problema" que se puede ver es de estructura de tu BD.

La relación natural para lo que propones es una llamada "de muchos a muchos". O sea, un usuario puede tener muchos amigos y un usuario puede estar en varias listas de amigos. La manera más limpia de romper una relación de este tipo es mediante una tabla intermedia:

Tabla: Usuario (id_usuario, otro_dato, otro_mas)
Tabla: Amigo (id_usuario, id_amigo)

Ejemplo:
Código:
Tabla USUARIO
id_usu	email		fecha_registro
--------------------------------------
1	[email protected]	2007-11-01
2	[email protected]	2008-01-02
3	[email protected]	2008-01-02
4	[email protected]	2008-01-11

Tabla AMIGOS
id_usu	id_amigo
-------------------
1	2
1	4
2	1
3	1
3	2
3	4
4	1
Es una manera bastante más sencilla de entender y de mantener. Tenla en cuenta.

Ahora, viendo tu código, te digo que lo que está pasando es lo que se espera (aunque no precisamente lo que tú esperas).

Recomendación aparte: Utiliza distintos nombres de variables. $usuario primero es una cadena (nombre de usuario) y luego le asignas un identificador de resultset. Eso puede generar cierta confusión.

¿Es necesaria la primera consulta? Lo único que haces es obtener el id del usuario conociendo su username. ¿El username no es único? Si es así, puedes utilizarlo directamente.

Veamos los errores:
Código PHP:
"SELECT * FROM amigos WHERE id_usuario='$user[id]'" 
Esta consulta te va a devolver un sólo registro (el del usuario con id=$user['id']). Así que hacer un while está de más porque el bucle se va a ejecutar una sola vez.

O sea, debes iterar es en el array que generas con la lista de amigos, no en el resultset.
Código PHP:
// Consultas para obtener el id del usuario $usuario
$consulta_id_usuario mysql_query("SELECT * FROM usuarios WHERE user='$usuario'");
$registro_usuario mysql_fetch_array($consulta_id_usuario);

// Consulta para obtener los datos del usuario
$consulta_usuario mysql_query("SELECT * FROM amigos WHERE id_usuario='$user[id]'");

if (
mysql_num_rows($query) > 0){
    
$datos mysql_fetch_array($query);
    
$array_amigos explode("-"$datos['id_amigos']);

    
// Iteramos en $array_amigos para obtener los datos de cada uno:
    
foreach($array_amigos as $id_amigo){
        
$consulta_amigo mysql_query("SELECT * FROM usuarios WHERE id='$id_amigo'");
        
$registro_amigo mysql_fetch_array($consulta_amigo);
        echo 
$registro_amigo['user'];
    }
       
if(
$registro_usuario['user'] == $_SESSION['usuario']){
    echo 
'<br /><a href="editar-amigos.php">Editar lista de Amigos.</a>';
}
                
}else{
    echo 
"No tienes amigos";

Saludos,