Foros del Web » Programando para Internet » PHP »

Mostrar aleatoriamente

Estas en el tema de Mostrar aleatoriamente en el foro de PHP en Foros del Web. Hola, a ver si pueden orientarme, tengo por ejemplo 20 productos en una tabla y quiero mostrar 1 de los 4 últimos cada vez que ...
  #1 (permalink)  
Antiguo 20/02/2003, 12:28
 
Fecha de Ingreso: febrero-2003
Ubicación: Tenerife
Mensajes: 1
Antigüedad: 21 años, 1 mes
Puntos: 0
Pregunta Mostrar aleatoriamente

Hola, a ver si pueden orientarme, tengo por ejemplo 20 productos en una tabla y quiero mostrar 1 de los 4 últimos cada vez que se carga la página.

el código que tengo es algo así:

hago la consulta
$consulta=mysql_query("select * from tabla order by id desc limit 4");

recojo los datos
$rows=@mysql_fetch_array($consulta);

y los muestro
echo $rows[producto];

qué tengo que usar para que muestre aleatoriamente los 4 últimos?

Salu2
Ana
  #2 (permalink)  
Antiguo 20/02/2003, 12:39
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
En tu consulta SQL puedes obtener esos 4 registros aleatorios usando la funcion rand() de Mysql:

Código PHP:
$consulta=mysql_query("select * from tabla order by rand() desc limit 4"); 
(el resto será igual)

Un saludo,
  #3 (permalink)  
Antiguo 20/02/2003, 15:45
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Es decir, que te muestre aleatoriamente 1 de los 4 ultimos registros. Entonces prueba a usar las funciones mysql_data_seek() , srand() y rand() (consulta el manual. Basicamente seria:
Código PHP:
$consulta=mysql_query("select * from tabla order by id desc limit 4"); 
srand((double)microtime()*1000000); // la semilla generadora de numeros aleatorios
$registro=rand(0,3); // aleatoriamente sale un numero de registro
mysql_data_seek($consulta,$registro); // nos posicionamos en el registro
$row=mysql_fetch_array($consulta); // leemos el registro 
Espero haber sido de ayuda.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
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 23:05.