Foros del Web » Programando para Internet » PHP »

Order By Rand() y Limit

Estas en el tema de Order By Rand() y Limit en el foro de PHP en Foros del Web. Tengo un problemilla con la forma de ordenar una consulta hecha con php y mysql. Vereis tengo una consulta ordenada de forma aleatoria utilizando Order ...
  #1 (permalink)  
Antiguo 18/03/2012, 07:15
 
Fecha de Ingreso: febrero-2012
Ubicación: N/A
Mensajes: 54
Antigüedad: 12 años, 2 meses
Puntos: 0
Order By Rand() y Limit

Tengo un problemilla con la forma de ordenar una consulta hecha con php y mysql.

Vereis tengo una consulta ordenada de forma aleatoria utilizando Order By rand() pero esta consulta esta paginada así que cuando cambio de página me la vuelve a ordenar aleatoriamente con lo cual me repite registros y otros no me los saca, se que puedo utilizar un número entero entre las parentesis(), pero si lo hago siempre me sacara el mismo desorden por decirlo de alguna manera, así que necesito que ese número cambie cada vez que entro en mi página y se mantenga mientras cambio con la paginación. lo primero he creado la variable $numero

Código PHP:
<?php
$numero
=rand(150);
?>
y lo segundo he colocado dicha variable entre los parentesis del Order by Rand('.$numero.')
Código PHP:
$sql .= ' ORDER BY rand('.$numero.') '//' ORDER BY NombreComer ASC ';
$sql .= 'LIMIT ' . (($pagination->get_page()- 1) * $records_per_page) . ', ' $records_per_page ''
Lo que ocurre es que el problema basicamente es el mismo ya que cada vez que cambio la paginación dicha variable cambia tambien y me repite resultados y algunos no los saca, necesito que esa variable solo cambie al entrar en mi página o al refrescar pero no cada vez que cambio de página con el paginador.

A ver si me podeis hechar un cable, bueno un saludo a tod@s.
  #2 (permalink)  
Antiguo 18/03/2012, 09:44
 
Fecha de Ingreso: agosto-2011
Mensajes: 59
Antigüedad: 12 años, 8 meses
Puntos: 8
Respuesta: Order By Rand() y Limit

O sea que quieres que la consulta sea diferente la primera vez pero igual en las paginaciones, ¿no?

Por que no te quedas si es la primera vez que lo haces o si viene de una paginacion, con una variable o algo que te lo controle.

Si es la primera vez generas una consulta totalmente nueva y te guardas la consulta, o lo que necesites para repetir tal cual esa consulta. Si procede de una paginación ejecutas la misma consulta pero cambiando los limites.
  #3 (permalink)  
Antiguo 18/03/2012, 13:06
 
Fecha de Ingreso: febrero-2012
Ubicación: N/A
Mensajes: 54
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Order By Rand() y Limit

Vale lo que no se es como hacerlo, lo que quiero decir es que el número aleatorio que le paso a la variable $numero no cambie mientras navego por las paginas utilizando la paginación y cambie cuando refresco la página o cuando entro en ella.

Y no se como hacerlo si me puedes ayudar te lo agradecere ya que no tengo muchos conocimientos de php y lo que he hecho lo he encontrado en el manual de php pero me falta información o no entiendo la misma.
  #4 (permalink)  
Antiguo 18/03/2012, 15:24
 
Fecha de Ingreso: agosto-2011
Mensajes: 59
Antigüedad: 12 años, 8 meses
Puntos: 8
Respuesta: Order By Rand() y Limit

Bueno. si no fuese por lo de refrescar te diría con sesiones...
Pero puedes pasarlo como un parámetro GET o POST
Si el valor existe estás paginando y si no existe es nuevo de alguna manera tienes que ver por que página vas para paginar, pues de igual manera puedes controlar si estás paginando o no y pasar el número que utilizaste para la consulta
  #5 (permalink)  
Antiguo 18/03/2012, 16:08
 
Fecha de Ingreso: febrero-2012
Ubicación: N/A
Mensajes: 54
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Order By Rand() y Limit

Lo he intentado de todas las maneras y no he podido conseguirlo algo hago mal por supuesto, lo he intentado por GET pero como mis conocimientos estan un poco verdes no lo consigo enfin seguire intentandolo gracias.

Un saludo.

Etiquetas: limit, mysql, order, rand, registro, sql, variables
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 21:59.