Ir para conteúdo

POWERED BY:

Arquivado

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

marvi

[Resolvido] mudar aleatorimente uma imagem

Recommended Posts

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"  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" 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 if
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

O 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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sempre irá existir 3 imagens?

 

Ou haverá combinações assim: 1/2/3 ou 1/3 ou 2/3?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que começo a entender o você quer.

 

Sugiro a seguite abordadem.

  • Faça o select com a ordem definida no bd.
  • Faça um loop pelo record ser e crie um array com as vizualizações
  • Crie um contador que seja incrementado e use como indice do array
  • Quando o contador for maior ou igual o ubound do vetor renicie o contador com 1

Deu uma luz?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que começo a entender o você quer.

 

Sugiro a seguite abordadem.

  • Faça o select com a ordem definida no bd.
  • Faça um loop pelo record ser e crie um array com as vizualizações
  • Crie um contador que seja incrementado e use como indice do array
  • Quando o contador for maior ou igual o ubound do vetor renicie o contador com 1

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" 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" 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 if 
end if

If rs.EOF Then
somaordem = 1
End If
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

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" 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" 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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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" 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" 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:

 

http://www.metalvox.com.br/banner.asp

Compartilhar este post


Link para o post
Compartilhar em outros sites

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" 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" 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

%>


Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

No caso pq você esta usando: total=CStr(total)

 

Se for número use total=CInt(total)

Compartilhar este post


Link para o post
Compartilhar em outros sites

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!

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.