Foros del Web » Programando para Internet » PHP »

Problema sencillo que no veo

Estas en el tema de Problema sencillo que no veo en el foro de PHP en Foros del Web. Hola, probablemente esto será una tontería pero no consigo solucionarlo (Puede ser por el sueño ). La cosa es que tengo una tabla llamada ruta, ...
  #1 (permalink)  
Antiguo 31/08/2013, 05:03
Avatar de ananda  
Fecha de Ingreso: enero-2012
Mensajes: 345
Antigüedad: 12 años, 3 meses
Puntos: 14
Problema sencillo que no veo

Hola, probablemente esto será una tontería pero no consigo solucionarlo (Puede ser por el sueño ). La cosa es que tengo una tabla llamada ruta, con el campo usuario y grupo, el usuario tiene el id del user registrado y el grupo, el id del grupo al que pertenece. Y luego tengo una tabla llamada publicaciones en la que aparecen todas las publicaciones de TODOS los usuarios registrados en la web. Lo que quiero es hacer que aparezcan las publicaciones de los usuarios que esten en un grupo determinado y quiero ordenarla según la fecha o el id. En esta última frase es donde tengo el problema, se ordena según usuarios y no por id DESC, es decir primero te muestra todas las publicaciones del usuario A, luego las de B y luego las de C y lo que quiero es que se muestren por id, por ej: una de B, luego una de A, otra de A, una de C...

Espero que se entienda, aquí dejo el código de como lo estoy haciendo:

Código PHP:
$sql mysql_query("SELECT usuario FROM ruta WHERE grupo ='".mysql_real_escape_string($idgrupo)."' "); 


    while (
$col mysql_fetch_array($sql)) { 
     
    
$numeros = array($col[0]); 

//Primero saco los usuarios que esten dentro del grupo '$idgrupo' en un while

                        
$consulta=mysql_query("SELECT * FROM publicaciones WHERE usuario in (".implode(',',$numeros).") ORDER BY id DESC ");
            
            while (
$sacarlo=mysql_fetch_array($consulta)){

//Luego saco las publicaciones en las que el usuario sea los encontrados en el while
// Aquí van todas las publicaciones

El problema, como ya he puesto arriba, es que se ordenan por usuarios y no por id DESC como le indico al código. A ver si podeis ayudarme, probablemente sea bastante sencillo pero no lo veo, gracias!
__________________
Creador de Vipefy , una nueva red social con un punto de vista diferente de las relaciones sociales.
  #2 (permalink)  
Antiguo 31/08/2013, 06:16
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 5 meses
Puntos: 175
Respuesta: Problema sencillo que no veo

puedes hacer un var_dump de tu array, de por ahi tienes un problema con los número, tal vez el campo no se llame ID o cosas similares, porque probé tu script y lo hace bien en mi caso..

var_dump(implode(',', $numeros));

Aunque si tienes la tabla con un campo relacionado, en este caso USUARIO, deberías solamente usar un JOIN o INNER JOIN, me parece, no conozco la estructura de tu tabla.
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #3 (permalink)  
Antiguo 31/08/2013, 06:29
Avatar de ananda  
Fecha de Ingreso: enero-2012
Mensajes: 345
Antigüedad: 12 años, 3 meses
Puntos: 14
Respuesta: Problema sencillo que no veo

Cita:
Iniciado por loncho_rojas Ver Mensaje
puedes hacer un var_dump de tu array, de por ahi tienes un problema con los número, tal vez el campo no se llame ID o cosas similares, porque probé tu script y lo hace bien en mi caso..

var_dump(implode(',', $numeros));

Aunque si tienes la tabla con un campo relacionado, en este caso USUARIO, deberías solamente usar un JOIN o INNER JOIN, me parece, no conozco la estructura de tu tabla.
Me muestra todo el array y correctamente, así:

Código PHP:
array (size=1)
  
=> string '74' (length=2)
array (
size=1)
  
=> string '88' (length=2)
array (
size=1)
  
=> string '105' (length=3)
array (
size=1)
  
=> string '124' (length=3
Y muestra las publicaciones de cada usuario, pero las muestra por usuarios, es decir, primero las 4 publicaciones del usuario '74', luego las 10 publicaciones del usuario '88' y estas si las ordena por id DESC, sin embargo yo quiero que ordene TODAS las publciaciones, no las publicaciones de un usuario concreto.
__________________
Creador de Vipefy , una nueva red social con un punto de vista diferente de las relaciones sociales.
  #4 (permalink)  
Antiguo 31/08/2013, 06:41
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 5 meses
Puntos: 175
Respuesta: Problema sencillo que no veo

Umm, entiendo, pero no conozco los resultados de tu consulta.. podrías probar con colocar 2 parámetros en tu ORDER BY... algo como

ORDER BY publicaciones, id DESC

o bien

ORDER BY id, publicaciones DESC

algo así, prueba y comentanos..
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #5 (permalink)  
Antiguo 31/08/2013, 08:42
Avatar de ananda  
Fecha de Ingreso: enero-2012
Mensajes: 345
Antigüedad: 12 años, 3 meses
Puntos: 14
Respuesta: Problema sencillo que no veo

Cita:
Iniciado por loncho_rojas Ver Mensaje
Umm, entiendo, pero no conozco los resultados de tu consulta.. podrías probar con colocar 2 parámetros en tu ORDER BY... algo como

ORDER BY publicaciones, id DESC

o bien

ORDER BY id, publicaciones DESC

algo así, prueba y comentanos..
Nada, sigue sin funcionar :S Gracias de todos modos, a ver si alguien puede echarme una mano.
__________________
Creador de Vipefy , una nueva red social con un punto de vista diferente de las relaciones sociales.
  #6 (permalink)  
Antiguo 31/08/2013, 08:49
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 5 meses
Puntos: 175
Respuesta: Problema sencillo que no veo

vuelvo a reiterarlo, no haz pensado en hacer un join o inner join o left join???
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #7 (permalink)  
Antiguo 31/08/2013, 10:53
 
Fecha de Ingreso: julio-2013
Ubicación: México
Mensajes: 361
Antigüedad: 10 años, 8 meses
Puntos: 55
Respuesta: Problema sencillo que no veo

Hola ananda.

Como lo planteas, no funcionara, la logica es incorrecta.
Debes hacer un Join como dice loncho_rojas.

Saludos
  #8 (permalink)  
Antiguo 31/08/2013, 11:12
 
Fecha de Ingreso: enero-2013
Mensajes: 62
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Problema sencillo que no veo

Cita:
Iniciado por ananda Ver Mensaje
Hola, probablemente esto será una tontería pero no consigo solucionarlo (Puede ser por el sueño ). La cosa es que tengo una tabla llamada ruta, con el campo usuario y grupo, el usuario tiene el id del user registrado y el grupo, el id del grupo al que pertenece. Y luego tengo una tabla llamada publicaciones en la que aparecen todas las publicaciones de TODOS los usuarios registrados en la web. Lo que quiero es hacer que aparezcan las publicaciones de los usuarios que esten en un grupo determinado y quiero ordenarla según la fecha o el id. En esta última frase es donde tengo el problema, se ordena según usuarios y no por id DESC, es decir primero te muestra todas las publicaciones del usuario A, luego las de B y luego las de C y lo que quiero es que se muestren por id, por ej: una de B, luego una de A, otra de A, una de C...

Espero que se entienda, aquí dejo el código de como lo estoy haciendo:

Código PHP:
$sql mysql_query("SELECT usuario FROM ruta WHERE grupo ='".mysql_real_escape_string($idgrupo)."' "); 


    while (
$col mysql_fetch_array($sql)) { 
     
    
$numeros = array($col[0]); 

//Primero saco los usuarios que esten dentro del grupo '$idgrupo' en un while

                        
$consulta=mysql_query("SELECT * FROM publicaciones WHERE usuario in (".implode(',',$numeros).") ORDER BY id DESC ");
            
            while (
$sacarlo=mysql_fetch_array($consulta)){

//Luego saco las publicaciones en las que el usuario sea los encontrados en el while
// Aquí van todas las publicaciones

El problema, como ya he puesto arriba, es que se ordenan por usuarios y no por id DESC como le indico al código. A ver si podeis ayudarme, probablemente sea bastante sencillo pero no lo veo, gracias!


Como queres que te lo muestre de otra manera si primero buscas los usuarios y luego la publicaciones, así es imposible que logres tu cometido.

Debes unir las bases como te dijeron con un join y luego haces 1 sola consulta y la ordenas por id.
  #9 (permalink)  
Antiguo 01/09/2013, 10:10
Avatar de ananda  
Fecha de Ingreso: enero-2012
Mensajes: 345
Antigüedad: 12 años, 3 meses
Puntos: 14
Respuesta: Problema sencillo que no veo

Muchas gracias a ambos pero al final no requiero hacer eso. Muchas gracias a los dos por vuestras respuestas!
__________________
Creador de Vipefy , una nueva red social con un punto de vista diferente de las relaciones sociales.

Etiquetas: mysql, select, sencillo, sql, 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 18:03.