Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rodrigoreis22

Função rand()

Recommended Posts

Estou fazendo um sistema de banners, no qual cada vez que o usuário entra na página, aparece um banner diferente. Para isso na minha query mysql eu uso a função rand().Na minha tabela (banner) tem 2 campos: id (auto_increment) e url (varchar).Inseri 4 valores: url1, url2, url3, url4Em seguida executei a seguinte query: SELECT * FROM banner ORDER BY RAND() LIMIT 1as saídas para esta query são sempre as mesmas:url1 e url4. Nunca saiu a url2 ou url3. Gostaria de saber por que só sai esses registros sendo que a função rand() deveria randomizá-los.Obs: Executei a query muitas e muitas vezes (umas 100 vezes). Já postei o problema na seção de banco de dados mysql, mas não obtive uma solução.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Edgar, tentei entrar no seu site (hoje 29/12/2003 00:02), mas parece que ele está fora do ar. você não poderia postar o script aqui? ou se ele for muito grande me mandar por email? rodrigoreis22@hotmail.com

Compartilhar este post


Link para o post
Compartilhar em outros sites

Prescot, ele pode usar um limite de banners cadastrados.É só dar um select e contar quantos registros tem no banco, e depois utilizar $num = rand(0, $numero_de_registros_no_bd);Não Pode?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara faz assim:

 

              $consulta="select * from tabela order by rand() limit 0,1";               $resultado=mysql_query($consulta);               while ($linha=mysql_fetch_array($resultado)){                       echo ("<img src='img/$linha[2]' alt='$linha[1]'>");               }               ?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Prescot, ele pode usar um limite de banners cadastrados.

 

É só dar um select e contar quantos registros tem no banco, e depois utilizar $num = rand(0, $numero_de_registros_no_bd);

 

Não Pode?

Até poderia, mas por exemplo, ele tem 2000 linhas no db, mas ele deletou o registro 51 e no rand deu 51, o SELECT não vai achar nenhum resultado né?. Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ae galera, eu fiz assim igual o cara falou ai:$num = rand(0,mysql_num_rows($query)-1);Ai toda vez que o script rodar, ele vai pegar uma linha diferente dos meus registros... acho que não tem importância se deletar um registro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Putz, eu tava testando aqui e deu certo assim:

$busca = mysql_query("SELECT * FROM tabela order by rand()");

$campo1 = mysql_result($busca,0,"campo1");

$campo2 = mysql_result($busca,0,"campo2");

Vê aí, foi mal por falar que não dá hehe. Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.