Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

bioshock

Rand()

Mensagens Recomendadas

KiNgPiTo

A melhor maneira penso que será evitares no Select (com select deduzo que seja numa chamada sql)...

Em php consegues controlar melhor o processo adicionando os números a um array e verificares se estão lá, se estiverem pedes outro até que não esteja e siga...

Algo tipo:

$ignorar = array();
$valor = rand(0, 10);
while( in_array($valor, $ignorar) )
    $valor = rand(0, 10);
$ignorar[] = $valor;

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bioshock

A melhor maneira penso que será evitares no Select (com select deduzo que seja numa chamada sql)...

Em php consegues controlar melhor o processo adicionando os números a um array e verificares se estão lá, se estiverem pedes outro até que não esteja e siga...

Algo tipo:

$ignorar = array();
$valor = rand(0, 10);
while( in_array($valor, $ignorar) )
    $valor = rand(0, 10);
$ignorar[] = $valor;

No SELECT estou a fazer algo como isto:

$query  = "SELECT * FROM imagens WHERE visibilidade=1 ORDER BY Rand() LIMIT 1"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
KiNgPiTo

Era o que queria dizer, quando mandas uma chamada por sql a uma BD ela foi... penso que depois de ir não tens como a controlar e saber se um rand já saiu ou não (provavelmente até tens com Stored procedures ou lá como se chamam, ou estou a dizer asneiras, não percebo nada de sql (offtopic: talvez dê nisso agora estes dias :D ))

Em php tens mais possibilidades de controlar, em vez de chamares o Rand em no SQL, chamas em php, verificas se está no array o que quer dizer que já saiu ou não e depois chamas um sql onde pesquisa um id com esse valor e retorna a row.

(Não sei se interessa, mas: http://www.titov.net/2005/09/21/do-not-use-order-by-rand-or-how-to-get-random-rows-from-table já me tinham falado e agora encontrei isto)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bioshock

Era o que queria dizer, quando mandas uma chamada por sql a uma BD ela foi... penso que depois de ir não tens como a controlar e saber se um rand já saiu ou não (provavelmente até tens com Stored procedures ou lá como se chamam, ou estou a dizer asneiras, não percebo nada de sql (offtopic: talvez dê nisso agora estes dias :D ))

Em php tens mais possibilidades de controlar, em vez de chamares o Rand em no SQL, chamas em php, verificas se está no array o que quer dizer que já saiu ou não e depois chamas um sql onde pesquisa um id com esse valor e retorna a row.

(Não sei se interessa, mas: http://www.titov.net/2005/09/21/do-not-use-order-by-rand-or-how-to-get-random-rows-from-table já me tinham falado e agora encontrei isto)

Bem eu li o site, mas vi que não se aplicava a mim, pois vai ser algo simples portanto posso usar o Rand().

Da forma como tu disseste, pelos arrays, eu até percebi o código, não percebi é onde tenho que o aplicar e as alterações que devo fazer para ele fazer-me o rand da imagem. Obrigado!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.