Foros del Web » Programando para Internet » PHP »

Mostrar consulta order by rand pero por fecha

Estas en el tema de Mostrar consulta order by rand pero por fecha en el foro de PHP en Foros del Web. Buenos dias. Tengo que realizar un banner de noticias en el que se publiquen las ultimas 10 noticias insertadas una a una. He realizado un ...
  #1 (permalink)  
Antiguo 09/06/2009, 01:41
Avatar de buedan  
Fecha de Ingreso: abril-2002
Mensajes: 552
Antigüedad: 22 años
Puntos: 1
Mostrar consulta order by rand pero por fecha

Buenos dias.

Tengo que realizar un banner de noticias en el que se publiquen las ultimas 10 noticias insertadas una a una.

He realizado un refresh de la pagina en cuestion para que cada 5 segundos realize una nueva consulta a la base de datos.

<META HTTP-EQUIV='refresh' CONTENT='5; URL='http://www.******.'>

La consulta la realizo de la forma siguiente.

$qry = "SELECT * FROM noticiasbanner$idioma ORDER BY RAND() DESC LIMIT 10";


pero al ser una consulta aleatoria no me muestra la noticia ordenada por fecha.

Como puedo realizar una consulta ordenada por fecha y que me muestre uno a uno los resultados?

Planteariais la idea del banner de otro modo?

Muchas gracias

un saludo
__________________
SNELHYD
  #2 (permalink)  
Antiguo 09/06/2009, 02:33
 
Fecha de Ingreso: junio-2009
Ubicación: Valencia
Mensajes: 45
Antigüedad: 14 años, 10 meses
Puntos: 8
Respuesta: Mostrar consulta order by rand pero por fecha

Hola buedan,

Yo plantearía una solución basada en JavaScript para no estar haciendo tantas llamadas al servidor. Al cargar la página obtendría las 10 noticias usando ORDER BY fecha y luego con JavaScript y CSS las mostraría aleatoriamente de 1 en 1.

Si no quieres usar JavaScript, lo que haría es obtener las 10 últimas noticias usando ORDER BY fecha y luego usar un rand de PHP para obtener uno de los 10 registros devueltos de forma aleatoria:

Código PHP:
$qry "SELECT * FROM noticiasbanner$idioma ORDER BY fecha DESC LIMIT 10";
$res mysql_query($qry);
$numRegistros mysql_affected_rows();
if (
$numRegistros 0)
{
    
$noticiaAMostrar rand(0$numRegistros 1); 
    
$indice 0;
    
$encontrada false;
    while ((!
$encontrada) && ($fila mysql_fetch_assoc($res)))
    {
        if (
$indice == $noticiaAMostrar)
        {
            
// Aquí extraemos los datos de la noticia
            
$encontrada true;
        }
    }

Salu2,
Carlos.
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 17:10.