Essa dica vai para quem quer fazer uma seleção aleatória e paginar os resultados, essa solução é muito usada para quem quer fazer uma vitrine de produtos...
O problema que o pessoal encontra e que ao usar a função rand(), ela gera resultados aleatórios diferentes a cada execução, portanto ao usar por exemplo;
$pagina = $_GET['$pagina'];
RAND()
, RAND(N)
Retorna um valor de ponto flutuante aleatório na faixa de 0
a 1.0
. Se um argumento inteiro N
é especificado, ele é usado como uma semente (produzindo uma sequência repetitiva):
Traduzindo: Se você passar algum argumento ele vai gerar uma seqüência sempre igual de números;
Exemplo:
mysql> SELECT i, RAND(3) FROM t;
+------+------------------+
| i | RAND(3) |
+------+------------------+
| 1 | 0.90576975597606 |
| 2 | 0.37307905813035 |
| 3 | 0.14808605345719 |
+------+------------------+
Mas isso não nos ajuda muito pois se eu usar por exemplo:
$pagina = $_GET['$pagina'];
Agora vai a nossa solução, gerar aleatoriamente o argumento que vai ser usado na função rand() e armazená-lo e uma variável de sessão...
//INICIANDO A SESSÃO
session_start();
//SETANDO A VARIAVEL argumento_rand COM UM NUMERO ALEATORIO
if(!isset($_SESSION['argumento_rand'])){
$_SESSION['argumento_rand'] = rand(1,100);
}
$pagina = $_GET['$pagina'];
"select * from xxx order by rand("._SESSION['argumento_rand'].") limit". $pagina * 10 .",".$pagina * 10 + 10;
//A CADA EXECUCAO A LISTAGEM SERÁ DIFERENTE,
//MAS ENQUANTO A SESSAO ESTIVER ATIVA ELA SERA A MESMA, PERMITINDO // ASSIM A PAGINACAO DE RESULTADOS
//DESENVOLVIDO POR EMANUEL SCARIOT
//emanuelscariot@gmail.com
?>