Foros del Web » Programando para Internet » PHP »

Cuestión de orden

Estas en el tema de Cuestión de orden en el foro de PHP en Foros del Web. Buenas tardes, de antemano agradrezco el tiempo q se toman en mirar el mensaje y en proporcionar la ayuda, la cuestion es la siguiente. tengo ...
  #1 (permalink)  
Antiguo 21/07/2011, 16:37
 
Fecha de Ingreso: marzo-2004
Mensajes: 199
Antigüedad: 20 años
Puntos: 1
Cuestión de orden

Buenas tardes, de antemano agradrezco el tiempo q se toman en mirar el mensaje y en proporcionar la ayuda, la cuestion es la siguiente.
tengo una tabla llamada usuarios con 3 campos (Id,nombre,apellido), tengo otra que se llama amigos con 3 campos (id_usuario1,id_usuario2,estado) donde el estado es si son amigos o no.

yo hago una consulta
$qRELATION = mysql_query("select * from amigos where Id_usuario1='$sesion' and state = '2';",$conn) or die ("Error :".mysql_error());
$aqRELATION = mysql_fetch_array($qRELATION);
para determinar quienes son los amigos del quien esta logueado, hasta ahi todo bien.

quiero datos de mis amigos, o del usuario logueado lo hago asi:
<table>
<tr><?php do{;?>
<td>
//aqui hago la consulta de los nombres y apellidos de la tabla usuarios
<?php
$qFRIENDS = mysql_query("select * from usuarios where Id_usuario='$aqRELATION[Id_usuario2]';",$conn) or die ("Error :".mysql_error());
$aqFRIENDS = mysql_fetch_array($qFRIENDS);

echo $aqFRIENDS[nombre]." ".$aqFRIENDS[apellidos]?>
</td>
</tr>
<?php }while ($aqRELATION = mysql_fetch_array($qRELATION));?>
</table

listo hasta ahi bien la cuestion es q quier darle la opcion de poder ordenarlos por nombre o por apellido, pero he intentado varias maneras y no lo he logrado. Como se haría?

De nuevo agradezco su colaboracion
  #2 (permalink)  
Antiguo 21/07/2011, 17:11
Avatar de sonics2008  
Fecha de Ingreso: diciembre-2009
Ubicación: Santiago, Chile
Mensajes: 60
Antigüedad: 14 años, 4 meses
Puntos: 2
Respuesta: Cuestión de orden

no se si entendi bien, pero lo que quieres es que te muestre ordenados??
bueno si es de esa forma es solo colocar order by en el query.
pero si quieres que el usuario seleccione el tipo de orden podrias hacer esto.

Código HTML:
<a href="pagina.php?or=1">ordenar por nombre</a> 
como html es eso y como php

Código PHP:
$ordenNombre=trim($_GET['or']);

$Onombre = ($ordenNombre!="")?" ordena_por_campo_en_tabla":" "
luego la variable $Onombre la colocas despues del order by
con eso deberia funcionar lo que tu quieres
  #3 (permalink)  
Antiguo 21/07/2011, 17:15
 
Fecha de Ingreso: marzo-2004
Mensajes: 199
Antigüedad: 20 años
Puntos: 1
Respuesta: Cuestión de orden

Sip, es la idea, la cuestion es que yo le debo decir q me los ordene segun el nombre en la tabla usuarios, pero esa consulta esta hecha dentro del <?do {;?> <?php while...?>

entonces solo me permite ordenarlo por la tabla de amigos. No se si me supe explicar
  #4 (permalink)  
Antiguo 22/07/2011, 06:34
Avatar de sonics2008  
Fecha de Ingreso: diciembre-2009
Ubicación: Santiago, Chile
Mensajes: 60
Antigüedad: 14 años, 4 meses
Puntos: 2
Respuesta: Cuestión de orden

haber si entendi trata de hacer esto
Código PHP:
<?php
echo "<a href='pagina.php?ord=1'  style='text-decoration:none '>Ordena por Relación</a>&nbsp;&nbsp;<a href='pagina.php?of=2' styel='text-decoration:none '>Ordena por Amigo</a>";
    echo 
"<table><tr><td>";
    
    
$Oamigo trim($_GET['ord']);
    
$Oamgio2 trim($_GET['of']);
    
$OrdAmigo = ($Oamigo!="")?" variable de amigo desc ":"";
    
$OrdFrien = ($Oamigo2!="")?" varibal de friends desc ":"";
    
$nada = ($OrAmigo == "" and $Oamigo2 =="" )?" ":" ";
        do{
        
$qFRIENDS mysql_query("select * from usuarios where Id_usuario='$aqRELATION[Id_usuario2]' $OrdAmigo $OrdFriend $nada ;",$conn) or die ("Error :".mysql_error());
        
$aqFRIENDS mysql_fetch_array($qFRIENDS);

        echo 
$aqFRIENDS[nombre]." ".$aqFRIENDS[apellidos]
    echo 
"</td></tr>";
        }while(
$aqRELATION mysql_fetch_array($qRELATION));
    echo 
"</table>";
?>
Saludos.
  #5 (permalink)  
Antiguo 22/07/2011, 07:10
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: Cuestión de orden

Me temo que esa solución no va a funcionar, @sonics2008, porque estás ordenando una consulta que sólo devuelve un registro, ya que está filtrada (where Id_usuario=...).

La solución es juntar las dos consultas en una con un join, por ejemplo, suponiendo que Usuaro tiene (id_usuario, nombre, apellidos) y Amigo tiene (id_usuario1, id_usuario2, estado)
Código:
SELECT nombre, apellidos FROM Usuario, Amigo WHERE ((id_usuario2=id_usuario) AND (id_usuario1='$sesion') AND (state=2)) ORDER BY '$ord' DESC
El id_usuario2=id_usuario mezcla las dos tablas según el id del usuario 2, el id_usuario1='$sesion' obliga que el usuario 1 sea el de la sesión y el state=2 fija el estado. Con el order by consigues ordenar la tabla por nombre o apellidos. Para hacerlo, utiliza lo que te dijo el otro compañero, pasa como parámetro en la URL ord=nombre u ord=apellidos, luego la rescatas con:
$ord = $_GET['ord']

Un saludo.

PD: aclarar que ese select sólo va a sacar los amigos del usuario de la sesión cuando en la tabla Amigo dicho usuario esté en id_usuario1, si también quieres sacar cuando esté en id_usuario2, hay que complicarlo un poco más.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?

Etiquetas: mysql, orden, tabla, usuarios
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 15:34.