Jump to content


Display aleatório


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

#1 leyton

leyton
  • Visitantes

Posted 14/01/2003, 00:56

Olá Pessoal, estou precisando de uma ajuda estou com a seguinte dúvida eu criei page na qual ela mostra 10 registros ai tudo bem. O problema é que eu tenho 23 registros inseridos no banco de dados eu poderia colocar todos os registros para serem visualizados ou poderia fazer uma paginação desses registros, mas na verdade o que eu quero é mostrar somente 10 registros no qual estariam em posição aleatoria de sequencia e após a atualização da page os outros registro registros que não foram mostrados seriam visualizados e assim sucessivamente. Seria um tipo de randomização de dados.
Alguém poderia mostrar como poderia fazer esse processo.

Desde já agradeço,

:rolleyes:

#2 Riven

Riven
  • Visitantes

Posted 14/01/2003, 11:01

leyton,
sinceramente, não entendi direito o que você deseja fazer...

Você quer criar uma página que vizualizará alguns registros, porém apenas 10 por página, o restante você não quer fazer paginação, e a parte que não estou entendendo direito, é de que você quer qua a página se auto-atualize e mostre os registros restantes??? :huh:

Explique-me melhor o que você quer fazer, para que eu possa ajudá-lo... :)

#3 Xclick

Xclick
  • Visitantes

Posted 14/01/2003, 14:19

Veja se esse código que o TARKAN passou, ajuda vc em algo...

<%
Set Con = CreateObject("ADODB.Connection")
Con.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("bd.mdb")
Set RS = Con.Execute("SELECT * FROM Dados")

'Randomiza os ids existentes no BD
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)

'Mostra os dados de acordo com o ID sorteado
Set rsMostra = Con.Execute("SELECT * FROM Dados where id=" & sID)
Response.Write "Nome: " & rsMostra("Nick") & "<br>"
Response.Write "Senha: " & rsMostra("Senha") & "<br>"
%>

acho que se vc tiver um campo de código no seu banco, fica fácil... é só mudar os outros campos...

#4 Leyton

Leyton
  • Visitantes

Posted 15/01/2003, 08:06

Ola Pessoal o que eu quero fazer é parecido com a função do código abaixo mais ao invés de retornar 1 id a cada vizualização gostaria de retornar 5 id assim sucessivamente. Isso funcionaria na visualização de banners. :rolleyes:

Desde já agradeço pela força,

<%
Set Con = CreateObject("ADODB.Connection")
Con.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("databases/sts10.mdb")
Set RS = Con.Execute("SELECT * FROM banners")

'Randomiza os ids existentes no BD
Do Until RS.EOF or RS.BOF
Valores = Valores & RS("baNNER_ID") & ","
RS.Movenext
Loop
ArraySplit = Split(Left(Valores,Len(Valores)-1),",")
Randomize
x = CInt(Rnd()*Ubound(ArraySplit))
sID = ArraySplit(x)

'Mostra os dados de acordo com o ID sorteado
Set rsMostra = Con.Execute("SELECT * FROM BANNERS where BANNER_id=" & sID)
Response.Write "Nome: " & rsMostra("BANNER_IMAGEM") & "<br>"
%>

#5 Tarkan

Tarkan

    Powered by Linux - Que inglês! ;)

  • Ex-Admins
  • 651 posts
  • Sexo:Masculino
  • Localidade:Copacabana - RJ

Posted 15/01/2003, 11:20

Opa galera, certinho?
XClick, valeu por tocar no meu nome! B)
Leyton, você pode usar essa mesma estrutura se você quiser.
Para mostrar 5 registros diferentes, utilize um For, como coloquei no código abaixo (o mesmo código, alterado).
O único problema é que se você tiver poucos registros, os banners irão se repetir.
Para isso, você pode fazer uma verificação simples de variáveis ao invés de usar o - response.write rs("Banner") -, utiliza uma variável e tenta ver se ela está com o mesmo valor de uma anterior.
Segue o código:

<%
Set Con = CreateObject("ADODB.Connection")
Con.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("bd.mdb")
Set RS = Con.Execute("SELECT * FROM Dados")

For i = 1 to 5
'Randomiza os ids existentes no BD
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)

'Mostra os dados de acordo com o ID sorteado
Set rsMostra = Con.Execute("SELECT * FROM Dados where id=" & sID)
Response.Write "Nome: " & rsMostra("Nick") & "<br>"
Response.Write "Senha: " & rsMostra("Senha") & "<br><br>"
Next
%>

Boa sorte!

:D
' nome: gustavo veiga
' profissão: ALOG Data Centers do Brasil (analista de sistemas)
' publicidade: ALOG Data Centers do Brasil

#6 Leyton

Leyton
  • Visitantes

Posted 15/01/2003, 16:59

Olá XClick, valeu pela dica da função FOR ela funcionou corretamente eu só gostaria de saber como posso inserir as variaveis para verificar se os banners não repitam quando é retornado na mesma vez?

Abaixo eu inseri o código que eu readapitei das dicas conseguidas até agora:


<%
set rsBanners = Server.CreateObject("ADODB.Recordset")
rsBanners.ActiveConnection = MM_banners_STRING
rsBanners.Source = "SELECT * FROM banners where banner_tipo = 'size'"
rsBanners.CursorType = 3
rsBanners.CursorLocation = 2
rsBanners.LockType = 3
rsBanners.Open()
rsBanners_numRows = 0
%>
<%
For i = 1 to 5
Dim rndmax
rndmax = CInt (rsBanners.RecordCount)
rsBanners.Movefirst


Dim rndNumber
Randomize Timer
rndNumber = Int (RND * rndMax)
rsBanners.Move rndNumber

%>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td> <a href="redir.asp?id=<%=(rsBanners.Fields.Item("banner_id"))%>&url=<%=(rsBanners.Fields.Item("banner_url"))%>"><img src="<%=(rsBanners.Fields.Item("banner_imagem").Value)%>" border="0"></a>
</td>
</tr>
</table>
<%
Next

rsBanners.Close()
%>

:rolleyes:

A união faz a força viva o Brasil, viva a a todos companheiros

#7 Xclick

Xclick
  • Visitantes

Posted 16/01/2003, 00:23

Denada Leyton, repasso os créditos para o TARKAN que foi quem realmente bolou hehehehehe...

sobre a verificação, vc precisa armazenar os 5 banners em 5 varráveis e fazer um comparação entre elas e apenas exibir as que forem diferentes... você pode jogar os 5 em uma matriz ou então usar uma cadeia de comparação (ifs)

#8 Leyton

Leyton
  • Visitantes

Posted 16/01/2003, 10:28

Olá Xclick é eu de novo eu ainda não consegui colocar os ifs e cases como variaveis para exibir os registros diferentes. Será que você pode me ajudar na montagem dessa instrução. Eu cheguei a montar mas não consegui montar . Desde já agradeço a ajuda. :rolleyes:

#9 Leyton

Leyton
  • Visitantes

Posted 17/01/2003, 01:52

Veja pessoal eu estou tentado fazer isso mas acho que não é o certo

<%
For i = 1 to 5
if i = ("banner_id") then
exit for
end if

Dim rndmax
rndmax = CInt (rsBanners.RecordCount)
rsBanners.Movefirst


Dim rndNumber
Randomize Timer
rndNumber = Int (RND * rndMax)
rsBanners.Move rndNumber

%>
:huh:

#10 cinraq

cinraq

    cinrASP

  • Usuários
  • 77 posts
  • Sexo:Não informado
  • Localidade:Rio de Janeiro

Posted 17/01/2003, 17:18

Na verdade o exit for tem a seguinte sintaxe:

<%
For i = 1 to 5
if i = ("banner_id") then exit for
Dim rndmax
rndmax = CInt (rsBanners.RecordCount)
rsBanners.Movefirst


Dim rndNumber
Randomize Timer
rndNumber = Int (RND * rndMax)
rsBanners.Move rndNumber

%>

Mas mesmo assim acho que seu código não vai dar certo, o que é esse banner_id, uma querystring, uma variável...?

teria que ser tipo isso:
if i = Request.QueryString("banner_id") then exit for
ou
if i = Rs("banner_id") then exit for
sei lá, o que você estiver indicando no seu código
"Moro no Brasil.
Não sei se moro muito bem ou muito mal.
Só sei que agora faço parte do país.
A inteligência é fundamental."
(Farofa Carioca)

#11 Leyton

Leyton
  • Visitantes

Posted 18/01/2003, 08:02

Eu tentei mas o problema persiste.
A condição que eu estou tentando fazer é:

Se os banners retornados tiver algum repetido então procura uma id de um banner diferente para que todos os banners possam retornar sem que tenha algum repetido.

O código atual ele retorna com alguns banners iguais éntão eu só estou tentando fazer que isso não ocorra.

Será que tem um jeito?

Desde já agradeço a atenção.

Abaixo eu inseri o código que eu estou tentando montar: Aqui ele retorna os banners de forma aleátoria mas o problema é não retornar banners repetidos na mesma visualização de banners retornados.


<%
set rsBanners = Server.CreateObject("ADODB.Recordset")
rsBanners.ActiveConnection = MM_banners_STRING
rsBanners.Source = "SELECT * FROM banners where banner_tipo = 'size'"
rsBanners.CursorType = 3
rsBanners.CursorLocation = 2
rsBanners.LockType = 3
rsBanners.Open()
rsBanners_numRows = 0
%>
<%
For i = 1 to 5
Dim rndmax
rndmax = CInt (rsBanners.RecordCount)
rsBanners.Movefirst


Dim rndNumber
Randomize Timer
rndNumber = Int (RND * rndMax)
rsBanners.Move rndNumber

%>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td> <a href="redir.asp?id=<%=(rsBanners.Fields.Item("banner_id"))%>&url=<%=(rsBanners.Fields.Item("banner_url"))%>"><img src="<%=(rsBanners.Fields.Item("banner_imagem").Value)%>" border="0"></a>
</td>
</tr>
</table>
<%
Next

rsBanners.Close()
%>

:unsure:

#12 DanDan

DanDan

    12 Horas

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

Posted 20/01/2003, 14:27

Ae pessoal beleza, esse é meu primeiro post aqui, acho que estou com uma duvida parecida, vou mostrar para vcs.

Estou com uns problemas, e vou tentar explicá-los da melhor forma possível

Mostruário Aleatório
Eu queria um sistema que utilizasse a tabela produtos, e fizesse uma consulta (acho que SQL) e retornasse a imagem do produto, o link e o seu preço, e o nome do produto esse link seria para o detalhes do produto,
mais que esse sistema funcionasse de forma aleatória, quando vc visitasse a pagina várias vezes, o sistema trocaria de produto, como se fosse um trocador de banner. Só que ao invés de trocar o banner, trocaria tudo, preço, links e a imagem... eu to com dor de cabeça agora só de ficar horas e horas no micro querendo fazer isso..

Na tabela tem um campo chamado disp, se esse disp tiver armazenado a variável N o produto não pode ser demonstrado, ou seja ele nãopode participar desse sistema que eu to tentando montar, e não estou
conseguindo.

O tabela produtos tem os campos nome,preco,imagem,disp,id,descricao.

Ae eu sou meio iniciante no ASP, e queria saber como fazer isso...

Se algum puder me ajudar eu agradeço

Falou!!!
wiiiiiiiiiiiiiiiiiiiiiiiiii

Imagine todo o povo jogando Wii.... vc irá dizer que eu sou sonhador, mas não sou o único. Espero que você um dia se junte a nós. (Fanboy Nintendista)

#13 Leyton

Leyton
  • Visitantes

Posted 20/01/2003, 19:36

Ola DanDan

Segue Abaixo o que vc precisa, se vc souber alguem que possa me dar uma dica para o meu caso eu agradeço um abraço .

<%@LANGUAGE="VBSCRIPT"%>
<!--#include file="Connections/produtos.asp" -->
<%
Dim RsProdutos__MMColParam
RsProdutos__MMColParam = "N"
if (Request("MM_EmptyValue") <> "") then RsProdutos__MMColParam = Request("MM_EmptyValue")
%>
<%
set RsProdutos = Server.CreateObject("ADODB.Recordset")
RsProdutos.ActiveConnection = MM_banners_STRING
RsProdutos.Source = "SELECT * FROM Produtos WHERE disp <> '" + Replace(RsProdutos__MMColParam, "'", "''") + "'"
RsProdutos.CursorType = 3
RsProdutos.CursorLocation = 2
RsProdutos.LockType = 3
RsProdutos.Open()
RsProdutos_numRows = 0
Dim rndMax
rndmax = CInt (rsProdutos.RecordCount)
rsProdutos.Movefirst

Randomize Timer
rndNumber = Int (RND * rndMax)
rsProdutos.Move rndNumber

%>
<%
Dim Repeat1__numRows
Repeat1__numRows = -1
Dim Repeat1__index
Repeat1__index = 0
RsProdutos_numRows = RsProdutos_numRows + Repeat1__numRows
%>

<%
While ((Repeat1__numRows <> 0) AND (NOT RsProdutos.EOF))
%>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><img src="<%=(RsProdutos.Fields.Item("imagem").Value)%>"><br>
<a href="detalhes.asp?id=<%=(RsProdutos.Fields.Item("id").Value)%>"><%=(RsProdutos.Fields.Item("produto").Value)%></a><br>
<%=(RsProdutos.Fields.Item("preco").Value)%></td>
</tr>
</table>

<%
Repeat1__index=Repeat1__index+1
Repeat1__numRows=Repeat1__numRows-1
RsProdutos.MoveNext()
Wend
%>
<%
RsProdutos.Close()
%>

#14 Tarkan

Tarkan

    Powered by Linux - Que inglês! ;)

  • Ex-Admins
  • 651 posts
  • Sexo:Masculino
  • Localidade:Copacabana - RJ

Posted 20/01/2003, 19:40

DanDan...
Seguinte, amigo...
Neste tópico eu colei um código pro nosso amigo, um código de sorteio, certo?
Pode utilizar esse mesmo código para fazer o sorteio dos produtos, da maneira que você quer.
Agora, para verificar se está na variável N e não mostrar, você pode usar:

If "blablabla" <> N Then
... mostra ...
End If

Ou seja, no código acima ele está fazendo uma comparação de um valor com a variável N. Se o valor "blablabla" for diferente de N, ele mostra o produto.
Ok?

Boa sorte!

:D
' nome: gustavo veiga
' profissão: ALOG Data Centers do Brasil (analista de sistemas)
' publicidade: ALOG Data Centers do Brasil

#15 DanDan

DanDan

    12 Horas

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

Posted 21/01/2003, 08:56

ae pessoal peguei um dos scripts ae e dei uma alteradas eu consegui fazer ele funcionar mais ou menos

Alguem manja de acess? eu to usando um BD que esta protegido, não dá para editá-lo... tem como mudar isso e fazê-lo editável novamente?

coloquei o script dentro de um arquivo .INC

agora ele dá esse erro... parece coisa do Banco de dados:
quando eu tirei a linha, funcionou legal, mais não vi nada de aleatório

nessa tabela tem o campo disp e o campo imagem... eu quero bloqueá-los quando no campo disp aparecer a variavel "N" e no imagem quando armazenar um gif- "sfoto.gif"

(Microsoft OLE DB Provider for ODBC Drivers error '80040e24'

O conjunto de linhas não dá suporte para busca regressiva.

/gg/aleatoremode.inc, line 16)


<%
Dim rsBanners,i,rsBanners_numRows
set rsBanners = lojaDB.Execute("SELECT * FROM produtos")
rsBanners_numRows = 0
%>

<%
For i = 1 to 5
Dim rndmax
rndmax = CInt (rsBanners.RecordCount)
rsBanners.Movefirst


Dim rndNumber
Randomize Timer
rndNumber = Int (RND * rndMax)
rsBanners.Move rndNumber


%>

<table width="40%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><div align =center>
<a href="detalheprod.asp?prod_id=<%=(rsBanners.Fields.Item("id"))%>&url=<%=(rsBanners.Fields.Item("nome"))%>"><img src=/images/"<%=(rsBanners.Fields.Item("imagem").Value)%>" border="0"></a>
<br><font size="1"><font color="#000000" face="Verdana, Arial, Helvetica, sans-serif"><b>
<a href="detalheprod.asp?prod_id=<%=(rsBanners.Fields.Item("id"))%>&url=<%=(rsBanners.Fields.Item("nome"))%>"><%=(rsBanners.Fields.Item("nome"))%><br><%=(rsBanners.Fields.Item("descricaop"))%></a>
<br><%=(rsBanners.Fields.Item("preco"))%>,00</b></font></font></div></td>
</tr>
</table>&nbsp;
<%
Next

rsBanners.Close()
%>

Ae valeu mesmo pessoal, esse forum caiu do ceu ou do servidor... nunca mais paro de postar aqui...

Olha o resultado: aqui
para funcionar nessa foto ae, saquei ela linha debaixo...
rsBanners.Move rndNumber

Grato

Falou!!!
wiiiiiiiiiiiiiiiiiiiiiiiiii

Imagine todo o povo jogando Wii.... vc irá dizer que eu sou sonhador, mas não sou o único. Espero que você um dia se junte a nós. (Fanboy Nintendista)




2 user(s) are reading this topic

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

IPB Skin By Virteq