Foros del Web » Programando para Internet » PHP »

Ayuda con funcion que compara tiempos

Estas en el tema de Ayuda con funcion que compara tiempos en el foro de PHP en Foros del Web. Hola a todos... Estoy programando un foro y necesito listar los posts segun el "Ultimo acceso" a cada post. Este dato "ULTIMO ACCESO" lo refresco ...
  #1 (permalink)  
Antiguo 24/10/2005, 18:04
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 13 años
Puntos: 2
Pregunta Ayuda con funcion que compara tiempos

Hola a todos...

Estoy programando un foro y necesito listar los posts segun el "Ultimo acceso" a cada post.

Este dato "ULTIMO ACCESO" lo refresco cada vez que se emite una respuesta al post, o bien, al crearse un nuevo post.

El tema es que no se bien como pasar de la teoria a la practica... en teoria, el post que tenga MENOR diferencia de tiempo entre "ULTIMO ACCESO" y "AHORA" sera el que figure como "PRIMERO" en la lista de los "ULTIMOS POSTS".

¿Deberia utilizar DATETIME o bien de alguna forma almacenar la cantidad de SEGUNDOS que pasaron desde 1970 (Unix Time) hasta el "ULTIMO ACCESO"?

Si la opcion indicada es la 2, ¿Como deberia comparar los tiempos para saber exactamente como voy a indicarle via PHP al MySQL que me ordene los resultados?


Muchas gracias de antemano !
  #2 (permalink)  
Antiguo 24/10/2005, 19:46
 
Fecha de Ingreso: diciembre-2002
Mensajes: 341
Antigüedad: 15 años
Puntos: 0
Creo que es más fácil de lo que estás pensando, lo que quieres hacer es , simplemente, ordenador los registros según el valor de la columna "ULTIMO ACCESO".

Es irrelevante el tipo de columna que selecciones para hacer esto, ya que un tanto un DATETIME como TIMESTAMP, se pueden ordenador de menor a mayor, vamos del más nuevo al más viejo.

El query SQL será así:

SELECT * FROM ... WHERE ... ORDER BY ultimo_acceso DESC

Vamos que desde PHP:

<?php
$sql_exec = mysql_query('SELECT * FROM ... WHERE ... ORDER BY ultimo_acceso DESC') or die();
while($post = mysql_fetch_assoc($sql_exec)) {
// Mostramos el contenido del post de alguna forma
print_r($post);
}
__________________
guebs - alojamiento web y dominios
www.guebs.com
blog.guebs.com
  #3 (permalink)  
Antiguo 24/10/2005, 19:54
 
Fecha de Ingreso: agosto-2005
Ubicación: Argentina, Capital Federal
Mensajes: 435
Antigüedad: 12 años, 4 meses
Puntos: 2
Yo hice algo similar guardando en la tabla el último acceso mediante la función time(), y luego para ordenar los resultados simplemente haces:
SELECT <campos> FROM <tabla> ORDER BY ultimo DESC
(suponiendo que el campo donde guardas los segundos se llame "ultimo")

Esto te ordenaría los resultados mostrando 1º los que el valor de la columna "ultimo" sea mayor.

Lo bueno de esto es que también mediante date() puedes convertir esa cantidad de segundos a la fecha (con el formato que prefieras) del último acceso al post.

Espero te sea útil.

Saludos!
  #4 (permalink)  
Antiguo 25/10/2005, 13:23
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 13 años
Puntos: 2
Muchisimas gracias a ambos! Muy utiles sus respuestas, con esta info ya me organice mucho mejor y combine todo esto con algo que voy aprendiendo de "Paginacion de resultados"... va saliendo.

MUCHISIMAS GRACIAS ARGINTXE y ZAQPZ
  #5 (permalink)  
Antiguo 26/10/2005, 13:05
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 13 años
Puntos: 2
Cita:
Iniciado por zaqpz
Yo hice algo similar guardando en la tabla el último acceso mediante la función time(), y luego para ordenar los resultados simplemente haces:
SELECT <campos> FROM <tabla> ORDER BY ultimo DESC
(suponiendo que el campo donde guardas los segundos se llame "ultimo")
Saludos!
ZAQPZ: En tu caso, que tipo de variable usaste en el MySQL para guardar los segundos? un simple INT estaria bien o deberia utilizar algun otro?
  #6 (permalink)  
Antiguo 26/10/2005, 13:31
 
Fecha de Ingreso: diciembre-2002
Mensajes: 341
Antigüedad: 15 años
Puntos: 0
Un simple INT(9) y UNSIGNED es perfectamente válido.
__________________
guebs - alojamiento web y dominios
www.guebs.com
blog.guebs.com
  #7 (permalink)  
Antiguo 26/10/2005, 13:57
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 13 años
Puntos: 2
Gracias nuevamente Argintxe... muy amable.

Voy a probarlo ahora mismo.
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 12:36.