Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/05/2012, 11:09
Avatar de Adrii952
Adrii952
 
Fecha de Ingreso: diciembre-2011
Ubicación: Madrid
Mensajes: 116
Antigüedad: 13 años, 2 meses
Puntos: 7
Consultar amigos red social

Hola, estoy trabajando en una especie de red social, y tengo una duda sobre como analizar los datos de la tabla de amigos.

La tabla es así:


Y el script que tengo actualmente para listar tus amigos en la red es este, dónde $usuario_flat vendría a ser tu nombre de usuario en la red.

Código PHP:
    //Lista de amigos
    
$consulta_amigos     mysql_query("SELECT * FROM amigos WHERE nombre_usuario_origen = '$usuario_flat' AND estado = 'aceptado'");
    
$consulta_amigos2     mysql_query("SELECT * FROM amigos WHERE nombre_usuario_destino = '$usuario_flat' AND estado = 'aceptado'");
    
$numero_de_amigos     mysql_num_rows(mysql_query("SELECT * FROM amigos WHERE nombre_usuario_origen = '$usuario_flat' AND estado = 'aceptado' OR nombre_usuario_destino = '$usuario_flat' AND estado = 'aceptado'"));

    
$column = array();
    while(
$array_amigos mysql_fetch_array($consulta_amigos2)) {
        
$column[] = $array_amigos[1];
    }
    
$column2 = array();
    while(
$array_amigos mysql_fetch_array($consulta_amigos)) {
        
$column2[] = $array_amigos[2];
    }

    
$lista_de_amigos array_merge($column$column2);
    
sort($lista_de_amigos);

    echo (
"<div id='caja'><p>Lista de amigos</p>");
    if (
$numero_de_amigos == "0") {
        echo 
"No tienes amigos";
        echo (
'<HR width=100% align="center">');
    } else {
        if (
$numero_de_amigos == 1) {
            echo (
"Tienes ".$numero_de_amigos." amigo");
        } else {
        echo (
"Tienes ".$numero_de_amigos." amigos");
        }
        echo (
'<HR width=100% align="center">');
        foreach (
$lista_de_amigos as $listar_amigos){ 
        
$nombre_amigo mysql_fetch_array(mysql_query("SELECT nombre_mostrar FROM usuarios WHERE nombre_usuario_flat = '$listar_amigos'"));
        echo (
'<a href="/inicio?u='.$listar_amigos.'">'.$nombre_amigo['nombre_mostrar'].' <span style="color:#7F7F7F">@'.$listar_amigos.'</span></a><br>');
        echo (
'<HR width=100% align="center">');
        }
    }
    echo 
'</div>'
Básicamente lo que hace es buscar en una fila que tenga tu nombre de usuario, el amigo que está en la otra columna, y como se puede ver en la imagen, depende de quien haya enviado la solicitud de amistad que el amigo se encuentre en una columna u otra, por lo que con lo que sé actualmente he tenido que hacer un código que haga 2 consultas, las meta en arrays, y las fusione.

Pero creo que tendrá que haber otra forma más fácil. ¿Alguna idea? Gracias