Jump to content


Photo

Select Random


  • Faça o login para participar
13 replies to this topic

#1 Rafa_nostrova

Rafa_nostrova

    Novato no fórum

  • Usuários
  • 24 posts
  • Sexo:Não informado

Posted 16/10/2004, 14:02

Queria pegar 3 registros aleatorios de uma tabela , meu codigo ta com um top 3 agora como poderia modificar para pegar aleatorio entre todos os registros...



SELECT top 3 * FROM Fotos ORDER BY id desc

Gostaria de pegar 3 registros aleatorios e mostra-las na tela como por exemplo:


(imagem1)
(imagem2)
(imagem3)

#2 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 16/10/2004, 14:05

Com qual banco de dados?

#3 Rafa_nostrova

Rafa_nostrova

    Novato no fórum

  • Usuários
  • 24 posts
  • Sexo:Não informado

Posted 16/10/2004, 14:09

Access...

#4 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 16/10/2004, 14:12

Ih.... Há um tempo atrás a gente bateu a cabeça pra conseguir fazer esse negócio funcionar pelo SQL, mas não teve jeito. Tivemos que montar uma pequena rotina. Se quiser, veja como foi:

http://forum.wmonlin...showtopic=54924

#5 Rafa_nostrova

Rafa_nostrova

    Novato no fórum

  • Usuários
  • 24 posts
  • Sexo:Não informado

Posted 16/10/2004, 14:37

Aquele topico ali é show de bola... achu q aprtir dali posso resolver o problema...


tentei usar issu:
SELECT TOP 3 * FROM fotos ORDER BY RND(id)

<% AbreConexao
Set rsFotos = Conexao.Execute("SELECT TOP 3 * FROM fotos ORDER BY RND(id)")
If rsFotos.EOF Then
Response.Write "Nenhuma foto encontrada!"
Else
imagem=rsFotos("imagem")
Response.Write "<table width=""260"" border=""0"" cellspacing=""0"" cellpadding=""0""><tr><td colspan=""2"" rowspan=""2""><img width=""110"" height=""80""  border=0 src="""&imagem&"""></td><td width=""10"">&nbsp;</td><td width=""140""></td></tr>"
RsFotos.MoveNext
imagem=rsFotos("imagem")
Response.Write "<tr><td width=""10"">&nbsp;</td><td width=""140"" rowspan=""3""><img width=""140"" height=""100""  border=0 src="""&imagem&"""></td></tr>"
RsFotos.MoveNext
imagem=rsFotos("imagem")
Response.Write "<tr><td width=""10"">&nbsp;</td><td width=""100"">&nbsp;</td><td width=""10"">&nbsp;</td></tr><tr><td width=""10"">&nbsp;</td><td colspan=""2"" rowspan=""2""><img width=""110"" height=""80""  border=0 src="""&imagem&"""></td></tr><tr><td width=""10"">&nbsp;</td><td width=""140"">&nbsp;</td></tr></table>"
End if
%>

Na pagina: www.onfest.com.br/fotos/index.asp da pra ve o resultado..

Ele sempre carrega as mesmas fotos..

Pra mim ficou nesta ordem FOTO4.jpg depois FOTO5.jpg e FOTO2.jpg

sempre que atualizo a pagina abre esta sequencia.;.

obs.: Pra ve qual a foto q abriu tem q clica com o direito em cima da foto e propriedades pois todas as fotos são as mesmas...

Edição feita por: Rafa_nostrova, 16/10/2004, 14:41.


#6 leanjo

leanjo

    Doutor

  • Usuários
  • 912 posts
  • Sexo:Não informado
  • Interesses:...

Posted 16/10/2004, 14:38

Opa
se eu entendi bem, vc quer fazer um sorteio com os dados da tabela ne...
eu tenho um codigo que funciona e acho que é pra isso que vc quer...

-------

<%
ConnectString = "Driver={Microsoft Access Driver (*.mdb)};DBQ=D:\xxx.mdb"
Set conn = Server.CreateObject("ADODB.Connection")
conn.open ConnectString

Sql="SELECT * FROM anuncios WHERE ID "
Set RS = conn.Execute(Sql)

Do Until RS.EOF or RS.BOF
Valores = Valores & RS("ID") & ","
RS.Movenext
Loop
ArraySplit = Split(Left(Valores,Len(Valores)-1),",")
Randomize
x = CInt(Rnd()*Ubound(ArraySplit))
sID = ArraySplit(x)

bd = "Select * From anuncios WHERE tipo='XXX' ORDER by id="&sID&""
Set rs = conn.execute(bd)
while Not y = 4
%>
<%=rs("empresa")%>
<% rs.movenext
y=y +1
wend
Set RS = Nothing
conn.close %>
-----------

while Not y = 4 diz qts registros serao exibidos.
so muda o XXX da tabela e do endereco do BD

Espero ter ajudado

Abraco

#7 Rafa_nostrova

Rafa_nostrova

    Novato no fórum

  • Usuários
  • 24 posts
  • Sexo:Não informado

Posted 16/10/2004, 15:08

Valew leanjo.. mas ainda nu deu naun.. tipo da uma olhada como inseri o teu codig na minha pagina..

<% AbreConexao
Set rsFotos = Conexao.Execute("SELECT TOP 3 * FROM fotos ORDER BY ID")

Do Until RSFotos.EOF or RSFotos.BOF
Valores = Valores & RSFotos("ID") & ","
RSFotos.Movenext
Loop
ArraySplit = Split(Left(Valores,Len(Valores)-1),",")
Randomize
x = CInt(Rnd()*Ubound(ArraySplit))
sID = ArraySplit(x)

Set rsFotos = conexao.execute("SELECT * FROM fotos ORDER BY id="&sID&"")
while Not y = 3 
imagem=rsFotos("imagem")
Response.Write "<table width=""260"" border=""0"" cellspacing=""0"" cellpadding=""0"">"
Response.Write "<tr><td width=""10"">&nbsp;</td><td width=""140"" rowspan=""3""><img width=""140"" height=""100""  border=0 src="""&imagem&"""></td></tr>"
Response.Write "</table>"
rsFotos.movenext
y=y +1
wend
Set rsFotos = Nothing


Ate deu certu mais o problema é que ele naun deixa taao aleatorio.. tipo... Todas as vezes q atualizo a pagina aparece umas dessas sequencias:

Foto1.jpg - foto6.jpg - foto5.jpg (+-)
ou
Foto2.jpg - foto6.jpg - foto5.jpg (+)
ou
Foto3.jpg - foto6.jpg - foto5.jpg (-)

Sabe pq????

Edição feita por: Rafa_nostrova, 16/10/2004, 15:09.


#8 Rafa_nostrova

Rafa_nostrova

    Novato no fórum

  • Usuários
  • 24 posts
  • Sexo:Não informado

Posted 22/10/2004, 00:35

Galera.. Como eu vi que aki naun encontraria solução para o meu problema tentei correr atras de uma solução... dai descobri uma coisa que pode ser util...

No PASCAL usando a FUnção RANDOM é necessario declarar um "randomize" para que a sequencia naun seja sempre a mesma... (o que acontece no meu codigo ASP, tentei usar os dois codigos postados nesse topico e todos eles aconteceram isso). O Programa fica mais ou menus assim:::

Program EXEMPLO;
Uses CRT;
Var
  {declaração de Variaveis};
Begin
      randomize; {PAra evitar a repetição de sequncias}
      {...}
     
      For I := 1 to 3 do begin {faz repetir o comando abaixo 3 vezes}
      X := RANDOM(50); {X vai receber um numero aleatorio entre 0 e 49}
      End;
      
      {...}
End.


TEntei usar randomize no ASP mas num consegui nenhum resultado... acredito que o motivo do codigo abaixo der sempre a mesma sequencia deve ser o mesmu do PASCAL.

Set rsFotos = Conexao.Execute("SELECT TOP 3 * FROM fotos ORDER BY RND(id)")

Se alguem conseguir descobrir alguma coisa sobre isso e conseguir resolver o problema por favor poste aki...

Edição feita por: Rafa_nostrova, 22/10/2004, 00:38.


#9 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 22/10/2004, 09:15

Não acho que isso tenha a ver. Se você fizer uma consulta dentro do Access, usando o RAND, ela funciona perfeitamente. O problema está quando o ASP faz a consulta.

#10 Rafa_nostrova

Rafa_nostrova

    Novato no fórum

  • Usuários
  • 24 posts
  • Sexo:Não informado

Posted 22/10/2004, 19:40

Sera que o ASP nao usa uma semente basica que sempre que o codigo executado gera a mesma sequencia basica... Se Usar um randomize sera que naun fara com que essa sequencia seja veraddeiramente aleatoria.. no ASP "randomize" e uma palavra reservada... pelo menus no dreanweaver ele fica da mesma cor dos comandos asp.... vlw.. se alguem saber como usa-lo... ???

#11 leanjo

leanjo

    Doutor

  • Usuários
  • 912 posts
  • Sexo:Não informado
  • Interesses:...

Posted 22/10/2004, 22:11

vc tem qtas fotos pra serem aleatorias?

aki eu uso e sai uma sequencia aleatoria direitinho...

#12 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 22/10/2004, 22:24

No ASP, o Randomize serve pra ser usado com a função Rnd. Nunca vi ninguém usar com outra coisa...

#13 Agente Linhares

Agente Linhares

    fuis...abraços!

  • Ex-Admins
  • 3138 posts
  • Sexo:Não informado
  • Localidade:Biritiba Mirim-SP

Posted 23/10/2004, 01:52

um ex. de uso:
Dim rndNumero
Randomize Timer
rndNumero = Int(RND * asmais)
exibir.Move rndNumero
asmais = ""& exibir("campo")&""
Variavel = ""&asmais&""

Response.Write 'aqui o dado a exibir


aqui neste tuto tem vários exemplos:

http://forum.wmonlin...showtopic=62721
> Busca On-line - A Busca que faltava na Internet! - Cadastre-se!
---------------------------------------------------------------------------
> BRdesign.NET - Soluções em Websites e Sistemas E-Commerce.
---------------------------------------------------------------------------
> BR-ecommerce - Sua loja virtual na internet! - Apenas R$99,90 mensais (hospedagem inclusa)!

#14 bareta

bareta

    Normal

  • Usuários
  • 64 posts
  • Sexo:Não informado

Posted 24/11/2005, 15:27

a solução para isso

sql="select * from foto_evento order by RND(INT(NOW*id)-NOW*id)"

no access ...

é so d raiva pq procurei procurei e naum achei
fabiobareta@hotmail.com
-------------------------------------------------------------------
Sistemas CGMOTION a melhor solução para seu site!!!

Sistema de usuarios online
Galeria de imagens (atualizada)!!!
Sistema de bate papo!!!
Sistema de Noticias
Acesse já o forum CGMOTION

*o verdadeiro amigo não é aquele que aparta a briga, mas sim aquele que chega dando uma voadora*Posted Image




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq