Ir para conteúdo

POWERED BY:

Arquivado

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

wlcosta.sh

Aumentar variável a cada segundo

Recommended Posts

Fala pessoal!

Preciso de um esqueminha pra aumentar uma variável a cada segundo. Pode ser em outra linguagem também.

 

Dei uma pesquisada e não consegui encontrar, tudo o que eu preciso é o seguinte:

 

- Será mostrada uma linha dizendo "A cada 15 minutos um brasileiro morre vítima de arma de fogo. Desde que esse site foi ao ar x brasileiros já morreram por esse motivo."

 

- x será definido com um valor inicial para compensar o tempo que eu perdi tentando fazer o script :pinch:

 

- A cada 15 minutos, x = x+1

 

Alguém pode dar uma força? :huh:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala Amigão,

Você vai ter que utilizar setTimeout do JS.

"Tanto" faz fazer com jQuery ou JS puro, ai vai do seu conhecimento.

 

Segue o link

http://www.emersoncarvalho.com/entendendo-o-settimeout-e-o-setinterval-do-javascript/

 

Abraços e BOA SORTE !

Compartilhar este post


Link para o post
Compartilhar em outros sites

É isso mesmo que o Bru_ce disse. Com setTimeOut tu resolve seu problema!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigos, o setTimeOut pareceu perfeito de primeira vista! Porém tem uma exigência a mais: a cada vez que atualizar o site o conteúdo da variável tem que continuar o mesmo, não pode resetar :/

 

Modifiquei umas coisinhas e o código tá mais ou menos assim:

 

<html>
   <head>
       <title>Teste</title>
       <script type="text/javascript">
           function displayName(armas)
           {
               document.getElementById('texto').innerHTML += x + ' '+'<br/>';
           }
           // Passando parametros para a função.
           var x = 1

           setInterval(function(){
	x = x+1;
              displayName(x);
           }, 1000);
       </script>
   </head>
   <body>
       <span id="texto"></span>
   </body>
</html>

 

Alguém tem alguma sugestão?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para evitar problemas com setTimeOut ou setInterval, que eu já irei explicar, utilize um cálculo matemático, de certa forma simples.

 

Mas por exemplo, se você for utilizar o setTimeOut, você não pode definir que a cada 15 minutos atualize, pois se eu apertar o F5, esse contador reinicia.

 

Vou colocar um exemplo prático:

- Entro no site 15:43 (hora que eu estou escrevendo);

- Contador no 0;

- Espero 5 minutos e aperto F5 (15:48);

- Contador continua no 0, mas o setTimeOut conta 15 minutos para atualizar o valor;

- Espero os 15 minutos e o valor é atualizado (16:03);

- Se passaram 20 minutos para atualizar o valor;

 

Isso sem contar o problema que pode haver com inúmeros clients ao mesmo tempo.

 

O que eu sugiro. Defina uma data e hora inicial, e realize o cálculo de "quantos minutos se passaram" desde a hora inicial. Divida por 15.

 

Vamos a um exemplo prático (necessita PHP >= 5.3):

$dateTime = new DateTime('2012-11-26 15:00:00');
$dataAtual = new DateTime();// Irá depender da hora do servidor, no meu caso, para o teste eu configurei a hora para '2012-11-26 16:14:59'
$diferenca = $dateTime->diff($dataAtual);
$minutosDecorridos = ((($diferenca->format('%a') * 24) + $diferenca->format('%h')) * 60) + $diferenca->format('%i');
$vitimas = floor($minutosDecorridos / 15); 
printf('Até o momento, morreram %s vítimas de arma de fogo' , $vitimas);

 

Contando que eu iniciei o cálculo a partir das 15:00:00 e o contador até as 16:14:59, a saída será:

Até o momento, morreram 4 vítimas de arma de fogo

 

Para alterar em tempo real esse valor, eu utilizaria o settimeout ou set interval com o valor dinâmico, que seria o que falta para completar os 15 minutos. Então você pode só aumentar em 1 o valor da variável sem atualizar a tela e sem necessidade de recalcular o valor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz um modelo em PHP, em outras linguagens é só manter a regra de calcular a data inicial menos data final, dividindo os minutos por 15 e assim sabendo o resultado.

 


$inicio = strtotime("25-11-2012 20:15:20"); /* Lançamento do site */
$fim = strtotime( date('d-m-Y H:i:s') ); /* Data atual */
$resu = $fim - $inicio; /* Diferença das datas */
echo round((round($resu / 60) / 15)) . ' mortos'; /* Resultado */

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.