Foros del Web » Programando para Internet » PHP »

se repiten valores aleatorios de una página a otra

Estas en el tema de se repiten valores aleatorios de una página a otra en el foro de PHP en Foros del Web. buenas tengo una pequeña duda. Tengo una página web que para que sea más dinámica he hecho que muestre las imágenes de unos establecimientos de ...
  #1 (permalink)  
Antiguo 27/02/2011, 13:09
 
Fecha de Ingreso: octubre-2010
Ubicación: Madrid
Mensajes: 295
Antigüedad: 13 años, 6 meses
Puntos: 12
se repiten valores aleatorios de una página a otra

buenas tengo una pequeña duda. Tengo una página web que para que sea más dinámica he hecho que muestre las imágenes de unos establecimientos de manera aleatoria con el siguiente código:

Código PHP:
mysql_select_db($database_conexion$conexion);
$rand rand();
$query_catalogo_imag "SELECT * FROM establecimientos ORDER BY rand($rand)"
Las he ordenado en 4 filas de cinco imágenes cada una y para que me saque en cada fila la búsqueda tengo que repetir dentro de la tabla esta secuencia:

Código PHP:
 <tr>
    <?php
    $startRow_catalogo_imag 
$startRow_catalogo_imag 5;
    
$query_limit_catalogo_imag sprintf("%s LIMIT %d, %d"$query_catalogo_imag$startRow_catalogo_imag$maxRows_catalogo_imag);
    
$catalogo_imag mysql_query($query_limit_catalogo_imag$conexion) or die(mysql_error());
    
$row_catalogo_imag mysql_fetch_assoc($catalogo_imag);
    
?>
    <?php do { ?>
     <td><div align="center"><a href="detalles_libros.php?recordID=<?php echo $row_catalogo_imag['ID']; ?>"><img src="<?php echo $row_catalogo_imag['url']; ?>" / ></a></div></td>
    <?php } while ($row_catalogo_imag mysql_fetch_assoc($catalogo_imag)); ?>
   </tr>
La primera página sale todo perfecto... el problema es que los registros son más de 20 y por tanto tengo que pasar a la página siguiente para que me muestre los otros 20. Dentro de la misma página no me repite ningún valor, pero en las páginas siguientes hay veces que me repite imágenes que ya habían salido en las anteriores. Cómo consigo que no se repita la consulta hasta llegar al número total de imágenes que tengo??
Gracias
  #2 (permalink)  
Antiguo 27/02/2011, 19:21
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: se repiten valores aleatorios de una página a otra

Me imagino que cada vez estas recargando la pagina para poder ir a ver los otros resultados...

Lo que tienes que hacer es tratar de recargar el contenido en la misma pagina para que tengas solo una consulta que vaya cambiando el valor de limit.

En todo caso trata de hacer la consuta directamente con RAND() sin valores:
SELECT campo FROM tabla ORDER BY RAND()

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #3 (permalink)  
Antiguo 27/02/2011, 19:53
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: se repiten valores aleatorios de una página a otra

No entiendo tu consulta. ORDER BY necesita el nombre de un campo, no un numero por argumento. Como es que te funciona? En todo caso, fijate en el segundo comentario de aca: http://www.forosdelweb.com/f18/sacar...-mysql-201300/

Si lo que dicen ahí es correcto, el RAND() va a elegir ordenar segun una columna aleatoria. Por lo tanto, tu paginacion debería tomar eso en cuenta y mantener el criterio en todas las paginas.
  #4 (permalink)  
Antiguo 28/02/2011, 02:28
 
Fecha de Ingreso: octubre-2010
Ubicación: Madrid
Mensajes: 295
Antigüedad: 13 años, 6 meses
Puntos: 12
Respuesta: se repiten valores aleatorios de una página a otra

pues lo del otro tema que me has señalado no me funciona.
Tienes que tener en cuenta que mi consulta se inicia cada 5 elementos, por tanto, lo que habría que hacer es un parámetro de manera que recordase cada valor que ha salido, para compararlo con lo nuevo y no volver a sacarlo...
  #5 (permalink)  
Antiguo 28/02/2011, 03:19
 
Fecha de Ingreso: octubre-2010
Ubicación: Madrid
Mensajes: 295
Antigüedad: 13 años, 6 meses
Puntos: 12
Respuesta: se repiten valores aleatorios de una página a otra

he pensado que se puede hacer un array con todos los valores de los ID existentes, desordenarlos y luego ir sacando los elementos una vez hecho todo el array, sacándolos de 5 en 5... esto es posible??? como se haría?
  #6 (permalink)  
Antiguo 28/02/2011, 12:09
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: se repiten valores aleatorios de una página a otra

A ver. Si entendí bien, RAND() en mysql no mezcla las filas. Lo que hace es seleccionar una columna al azar. Por lo tanto, tu consulta con RAND() lo que va a hacer es ordenar segun un criterio diferente cada vez. Pero siempre te va a devolver un "orden", no un "azar".

Por lo tanto, lo que necesitas es que tras la primera consulta con RAND() el resto de las paginas tambien consulten con ese criterio.

Eso es lo que te puede aportar RAND()

Hacer una tabla temporal me parece mucho rollo.
  #7 (permalink)  
Antiguo 28/02/2011, 12:17
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: se repiten valores aleatorios de una página a otra

Como yo lo haría:

Crear un numero al azar como lo desees, pero solo 1 vez para guardarlo en una SESSION. Luego le paso ese numero a RAND como semilla para que la consulta no cambie cuando pase de pagina.
  #8 (permalink)  
Antiguo 02/03/2011, 06:22
 
Fecha de Ingreso: octubre-2010
Ubicación: Madrid
Mensajes: 295
Antigüedad: 13 años, 6 meses
Puntos: 12
Respuesta: se repiten valores aleatorios de una página a otra

Cita:
Iniciado por Ronruby Ver Mensaje
Como yo lo haría:

Crear un numero al azar como lo desees, pero solo 1 vez para guardarlo en una SESSION. Luego le paso ese numero a RAND como semilla para que la consulta no cambie cuando pase de pagina.
me dices cómo puedo hacerlo???
si hago la consulta sin ordenarlos de ninguna manera aleatoria, me sale todo perfecto y no me repite ningún valor van en orden, pero si quiero ordenarlos con rand() si se me repiten...

Etiquetas: aleatoria
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 06:53.