Ir para conteúdo

POWERED BY:

Arquivado

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

newboxters

[Resolvido] Loop sem banco de dados

Recommended Posts

Olá pessoal.

 

Como eu posso fazer (há alguma maneira de fazer isso?) um loop sem banco de dados, analisando somente datas.

 

Por exemplo, eu vou aplicar isso num sistema de cadastro de usuários. O usuário se cadastrou em 10 de março, por exemplo, e hoje é 30 de junho. Então, eu precisava que quando ele acessasse seu painel e clicasse em estatísticas, mostrasse o seguinte texto:

 

10 de julho de 2008 (não exibe, pois hoje não é 10 de julho ou superior)

10 de junho de 2008

10 de maio de 2008

10 de abril de 2008

10 de março de 2008

10 de fevereiro de 2008 (não exibe, pois o usuário só se cadastrou em 10 de março).

 

Ou seja, basicamente, eu tenho no banco de dados apenas a data que ele se cadastrou, que é 10 de março de 2008. A partir dessa informação, eu precisava repetir o dia e avançando os meses (sempre que completar um mês).

 

Tem como fazer esse loop, sem usar banco de dados, só manipulando a data de cadastro com a data de hoje? Como eu poderia fazer isso?

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usando as funções Datediff(para pegar intervalo entre datas) e Dateadd(para adicionar datas) você consegue fazer isso.

 

Pesquisa sobre elas e se tiver dificuldade em desenvolver poste aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá hargon. Obrigado pela dica. Achei vários exemplinhos na Internet, principalmente para calcular idade, quantos dias faltam para determinado evento etc.

 

Mas eu ainda não consegui fazer o loop que eu preciso, pois do jeito que eu fiz ele simplesmente retorna um único número, exemplo:

 

Response.Write DateDiff("d", "25/06/2008", "20/06/2008") 'retorna 5 dias a diferença entre as datas

Response.Write "b" & DateDiff("m", "25/04/2008", now()) 'retorna 2 meses

 

----

Edit:

Estou chegando...

 

Total = DateDiff("m", "04/2007", "05/2008") '13

For I = 4 To Total
Response.Write "<br />" 'Sem o <br> dá erro. Pq precisa desse <br /> ?
Response.Write DateAdd("d",30,"24/" & I & "/2007") 'Linha do erro abaixo...
Next

Exibe:

24/5/2007

23/6/2007

24/7/2007

23/8/2007

23/9/2007

24/10/2007

23/11/2007

24/12/2007

23/1/2008

 

Microsoft VBScript runtime error '800a000d'

 

Type mismatch: '[string: "24/13/2007"]'

 

/scripts/painel/pagamento/pagamento.asp, line 5

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deixa eu ver se entendi.

 

Você vai informar 10 de março de 2008.

 

Aí o loop exibiria 10/03, 10/04, 10/05, 10/06. Certo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso, mas com o ano também, até chegar a data atual, mas com o detalhe que eu postei no primeiro post:

10 de julho de 2008 (não exibe, pois hoje não é 10 de julho ou superior), só mesmo quando completar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

<_<

<%
data = "10/3/2007"
totalMeses = datediff("m",data,date)

for i = 0 to totalMeses 
	if (datediff("d",dateAdd("m",i,data),date)) > 0 then
		response.write dateAdd("m",i,data) & "<br />"
	end if
next
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora ficou correto. Quase o que eu fiz, tava faltando somente esses detalhes mesmo.

 

Só por curiosidade, tem como inverter a ordem, de o último mês aparecer por primeiro?

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Troca

for i = 0 to totalMeses

 

Por

for i = totalMeses to 0 step -1

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.