Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal, gostaria de saber como mudar sequenciado uma imagem.
Tentei esse método, mas este está fazendo visualizar as imagens que tem número de visialização mais baixa e quero que essas imagens fiquem sequenciado independente de quantidade de visualização.
MAS, elas não podem se repetir até todas serem visualizadas e iniciar tudo de novo, entenderam?
vtipo=1
sql = "select * from publicidade where ativo = 1 and tipo = " & vtipo & " order by visualizacoes asc"
set rs = Conexao.Execute(sql)
if not rs.eof then
vizua = CStr(rs("visualizacoes")) + 1
sql = "update publicidade set visualizacoes = " & vizua & " where codigo = " & rs("codigo")
Conexao.Execute(sql)
if rs("ext") = "swf" then%>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="[http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0"](http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0) width="728" height="90">
<param name="movie" value="<% = rs("nome") %>" >
<param name="quality" value="high">
<embed src="<% = rs("nome") %>" quality="high" pluginspage="[http://www.macromedia.com/go/getflashplayer"](http://www.macromedia.com/go/getflashplayer) type="application/x-shockwave-flash" width="728" height="90"></embed></object>
<% else
vlink=rs("link")
vlink=replace(vlink,"http://","")
%>
<a href="http://<% = vlink%>" target="_blank">
<img border="0" src="<% = rs("nome") %>" width="728" ></a><% end if
end ifO que eu quero é o seguinte, que seja exibido as imagens em orderm, tipo:
Imagem 1 depois Imagem 2 e Imagem 3. Ai se Imagem 3 for a ultima, quero que inicie de novo: Imagem 1 depois Imagem 2 e Imagem 3
Acredito que no banco de dados posso colocar um campo para colocar a imagem na ordem que quero, mas não sei como fazer isso no ASP para que ele faça o loop certo, entendeu?
Sempre irá existir 3 imagens?
Ou haverá combinações assim: 1/2/3 ou 1/3 ou 2/3?
Terá mais de 3 imagens... será exibida em order crescente até o máximo das imagens, se for 5 cadastradas, exibirá 1,2,3,4 e 5 e zera de novo e vai 1,2,3,4 e 5... se tiver 3 imagens, vai 1,2 e 3...
Entendeu? Só que preciso de um campo no banco para informar que tal imagem é ordem 1, 2, 3... para saber qual imagem exibir primeiro, de acordo com a ordem.
Vai me desculpar mas ainda não captei o que você quer. E também não entendi o códgo que você postou como exemplo.
Mas vai uma sugestão:
sql = "select * from publicidade where ativo = 1 and tipo = " & vtipo & " order by nome,visualizacoes asc"
Ordene por Nome e faça um loop. Ai faça um controle através de uma quebra. Algo assim:
if not rs.eof then
noma_ant = rs("nome")
vizua = 1
while not rs.eof
if nome <> nome_ant then
vizua = 1
nome_ant = rs("nome")
end if
vizua = vizua + 1
.... resto do seu código .....
Wend
end if
Deixa eu ver se explico melhor:
Há um banco:
Campo nome | Campo ordem
Figura.jpg | 1
Figuranova.jpg | 2
Assim, no loop a imagem figura.jpg vai ser a primeira se exibir, pois no campo ordem ela está como 1 e quando derem um refresh, atualizar, será exibida a figuranova.jpg que tem no campo ordem o número 2.
Uma é primeira e a outra é segunda e assim posso mudar a ordem, fazendo a figura.jpg ser a segunda se caso eu mude, no campo ordem, o numero 1 para 2
Só que quando ela chegar no numero 2 e for o último número, ela volta para 1 e assim vai.
É como se fosse um banner.
Acho que começo a entender o você quer.
Sugiro a seguite abordadem.
Deu uma luz?
>
Acho que começo a entender o você quer.
Sugiro a seguite abordadem.
Deu uma luz?
Deixa eu ver se eu entendi, faço isso:
vtipo=1
sql = "select * from publicidade where ativo = 1 and tipo = " & vtipo & " order by visualizacoes asc"
set rs = Conexao.Execute(sql)
somaordem = 1
if not rs.eof then
sql1 = "select * from publicidade where ativo = 1 and tipo = " & vtipo & " and ordem = " & somaordem & ""
set rs1 = Conexao.Execute(sql1)
somaordem=somaordem+1
if rs("ext") = "swf" then
%>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="[http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0"](http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0) width="728" height="90">
<param name="movie" value="<% = rs1("nome") %>" >
<param name="quality" value="high">
<embed src="<% = rs1("nome") %>" quality="high" pluginspage="[http://www.macromedia.com/go/getflashplayer"](http://www.macromedia.com/go/getflashplayer) type="application/x-shockwave-flash" width="728" height="90"></embed></object>
<% else
vlink=rs1("link")
vlink=replace1(vlink,"http://","")
%>
<a href="http://<% = vlink%>" target="_blank">
<img border="0" src="<% = rs1("nome") %>" width="728" ></a><% end ifIf rs.EOF Then
somaordem = 1
End If
%>
Tem o componente adrotator para isso.
Usar ele combinado com select´s e loop´s não resolve ?
Queria sem componentes... se for possível, no caso, não conheço esse componente...
você teria o link da página para que eu possa ter uma idéia de como ela é?
Acho que seria algo assim:
<%
vtipo=1
sql = "select max(visualizacoes) as total_visualizacao from publicidade where ativo = 1 and tipo = " & vtipo & " order by visualizacoes asc"
set rs = Conexao.Execute(sql)
if not rs.eof then
total_visualizacao = rs("total_visualizacao")
somaordem = 1
if not rs.eof then
sql1 = "select * from publicidade where ativo = 1 and tipo = " & vtipo & " and ordem = " & somaordem & ""
set rs1 = Conexao.Execute(sql1)
if rs("ext") = "swf" then
While Not rs.EOF
%>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="[http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0"](http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0) width="728" height="90">
<param name="movie" value="<% = rs1("nome") %>" >
<param name="quality" value="high">
<embed src="<% = rs1("nome") %>" quality="high" pluginspage="[http://www.macromedia.com/go/getflashplayer"](http://www.macromedia.com/go/getflashplayer) type="application/x-shockwave-flash" width="728" height="90"></embed></object>
<% else
vlink=rs1("link")
vlink=replace1(vlink,"http://","")
%>
<a href="http://<% = vlink%>" target="_blank">
<img border="0" src="<% = rs1("nome") %>" width="728" ></a>
<%
rs.MoveNext
somaordem = somaordem + 1
if somaordem > total_visualizacao then
somaordem = 1
End If
wend
end if
End If
end if
%>
É só uma dica pois fica dificil opinar sem term uma idéia de como isto esta sendo implementado.
Se for o caso mande um print screen da página.
FIZ ASSIM:
Só que em vez de mostrar só uma imagem de cada vez, ela mostrou as duas de vez, mas está somando, contudo como faço para só mostrar uma imagem a cada refresh?
vtipo=1
sql = "select * from publicidade where ativo = 1 and tipo = " & vtipo & ""
set rs = Conexao.Execute(sql)
somaordem = 0
if not rs.eof then
While Not rs.EOF
somaordem = somaordem +1
session("somaordem")=somaordem
somaordemr=session("somaordem")
response.write("Aqui é a soma" & somaordemr)
response.write "<br><br>"
sql1 = "select * from publicidade where ativo = 1 and tipo = " & vtipo & " and ordem = " & somaordemr & ""
set rs1 = Conexao.Execute(sql1)
if not rs1.eof then
if rs1("ext") = "swf" then
%>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="[http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0"](http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0) width="728" height="90">
<param name="movie" value="<% = rs1("nome") %>" >
<param name="quality" value="high">
<embed src="<% = rs1("nome") %>" quality="high" pluginspage="[http://www.macromedia.com/go/getflashplayer"](http://www.macromedia.com/go/getflashplayer) type="application/x-shockwave-flash" width="728" height="90"></embed></object>
<% else
vlink=rs1("link")
vlink=replace(vlink,"http://","")
%>
<a href="http://<% = vlink%>" target="_blank">
<img border="0" src="<% = rs1("nome") %>" width="728" ></a>
<% end if
end if
rs.MoveNext
Wend
end if
if rs.eof then
somaordem = 1
End If
Veja como ficou:
Pelo que pude entender este problema é pq toda a vez q você roda o codigo acontece esta atribuição somaordem = 1.
Tenta assim:
<%
vtipo=1
sql = "select * from publicidade where ativo = 1 and tipo = " & vtipo & ""
set rs = Conexao.Execute(sql)
'somaordem = 1
'Inicia o valor da session
if session("somaordem") = 0 or session("somaordem") = "" then
session("somaordem") = 1
end if
somaordem=session("somaordem")
if not rs.eof then
sql1 = "select * from publicidade where ativo = 1 and tipo = " & vtipo & " and ordem = " & somaordem & ""
set rs1 = Conexao.Execute(sql1)
if not rs1.eof then
if rs1("ext") = "swf" then
%>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="[http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0"](http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0) width="728" height="90">
<param name="movie" value="<% = rs1("nome") %>" >
<param name="quality" value="high">
<embed src="<% = rs1("nome") %>" quality="high" pluginspage="[http://www.macromedia.com/go/getflashplayer"](http://www.macromedia.com/go/getflashplayer) type="application/x-shockwave-flash" width="728" height="90"></embed></object>
<% else
vlink=rs1("link")
vlink=replace(vlink,"http://","")
%>
<a href="http://<% = vlink%>" target="_blank">
<img border="0" src="<% = rs1("nome") %>" width="728" ></a>
<% end if
else
response.write ("não há cadastro")
end if
somaordem = somaordem + 1
if rs.eof then
somaordem = 1
End If
'Atualiza a sessin aqui
session("somaordem")=somaordem
End If
%>
Funcionou a contagem e aparição da imagem na ordem, mas o problema é que a contagem somaordem = somaordem + 1 está eterna, ela deveria voltar para 1 quando acabasse os banners, mas ela está indo para 10, 11... e o certo é para no 2, já que há só duas figuras no banco.
Crie uma session com o valor máximo de visualizações.
somaordem = somaordem + 1
if rs.eof or somaordem > session("total_visua") then
somaordem = 1
End If
'Atualiza a sessin aqui
session("somaordem")=somaordem
Fiz, mas fica nessa, ele não zera tudo de novo.
set rs = Conexao.Execute(sql)
total=rs("ordem")
total=CStr(total)
Ai vem a parte que me mostrou:
somaordem = somaordem + 1
if rs.eof or somaordem > total then
somaordem = 1
End If
No caso pq você esta usando: total=CStr(total)
Se for número use total=CInt(total)
Agora funcionou!
O problema foi que não usei o cint e ele não fazia a comparação correta entre os números, aí você me informou e deu certo!
Obrigado por tudo!
Parabéns jothaz, ta mandando bem na ajuda do pessoal aqui na seção ASP.
Campanha Jothaz pra moderação! rsrsrsrsrsrsrs
Já trabalho a algum tempo na área e passei por vários perrengues.
Então as vezes posso ajudar. Já fui mais ativo no fórum, porém passei por uns problema de saúde grave e quase desencarnei.
Mas estou voltando a ativa.
Quanto a moderação, o xanburzum faz um ótimo trabalho, e acho que já não tenho idade nem saúde para aguentar o tranco. :P
Mas precisando estamos ai
@OFF Desculpem moderas minha ultima mensagem rsrsrs
Jothaz em relação aos problemas de saúde realmente temos que tomar cuidado e deixar a saúde acima de tudo, porém não se pode ficar preso por isso, melhoras ae pra ti.
Em relação a idade, que isso cara, nada a ver, a idade não atrapalha em nada, quando eu chegar aos 80 se Deus quiser quero esta que nem meu avô! firme e forte! o véi se a familia não segurar quer ficar trabalhando seja na hortinha dele ou arrumando serviço srsrsrsrs, idade não atrapalha nem impede nadica de nada.
Mais continue assim pois certamente já estão vendo sua ajuda e certamente irão reconhecer seu empenho perante a comunidade, eu que já passei pela modera seu que a coisa mais gratificante é ter seu trabalho ou ajuda prestada sendo reconhecido, por isso boa sorte.
[]'s
Não entendi muito bem o que esta querendo, mais tente assim
sql = "select * from publicidade where ativo = 1 and tipo = " & vtipo & " order by visualizacoes desc"
[]'s