Ir para conteúdo

POWERED BY:

Arquivado

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

xXxWesleyxXx

[Resolvido] contador variavel em php

Recommended Posts

olá pessoal.... gostaria de ajuda para fazer uma contagem regressiva em php.......

 

 

//primeiro eu pego duas variaveis que me darão os dados base

 

$distancia=2;

$velocidade=300; //este é o tempo, em segundos, para cada unidade de distancia acima

 

$tempo=$distancia*$velocidade; /*sabemos então que, o tempo total será 10mn, pois 2 vezes 300 segundos é 600 segundos, que em minutos é 10 (600/60=10)*/

 

/* Bem, agora que eu sei quanto tempo será, como fazer isso no servidor? tpw, será 10 munutos, então exiba na tela a data e a hora em que este tempo vai acabar, ou seja, uma contagem regressiva:

o tempo vai acabar dia 10/08/2012 as 13:58:20h / faltam 52:32:40 h

 

obs. sei que para exibir este tempo na pagina mudando é em javascript, porem, quando o usuário sair da pagina, quero que este tempo esteja ali certinho sem mudar, acompanhando o servidor.... cada usuário tem sua senha e login.... se precisar de mysql pode ser tambem!

 

 

eu já tenho o seguinte codigo:

 

<?php

$distancia=2;
$velocidade=300;

#Informamos as datas e horários de início e fim no formato Y-m-d H:i:s e os convertemos para o formato timestamp
$dia_hora_atual = strtotime(date("Y-m-d H:i:s"));//aqui eu tenho a garantia de que a hora nunca muda, pois é a do servidor

$dia_hora_evento =strtotime(date("2012-12-20 23:59:59"));/*é esta linha que tenho que mudar, tenho que colocar esta data através de 
uma variável, pois não tem como eu saber que data será, é diferente em cada situação!
Teria relação entre as variaveis $distancia e $velocidade.*/

#Achamos a diferença entre as datas...
$diferenca = $dia_hora_evento - $dia_hora_atual;


#Fazemos a contagem...
$dias = intval($diferenca / 86400);
$marcador = $diferenca % 86400;
$hora = intval($marcador / 3600);
$marcador = $marcador % 3600;
$minuto = intval($marcador / 60);
$segundos = $marcador % 60;

#Exibimos o resultado
echo "$dias dia(s) $hora hora(s) $minuto minuto(s) $segundos segundo(s)";
?>

Por favor pessoal! Me ajudem, já estou a mais de 1 ano tentando resolver isso. Se não quiserem ajudar no codigo inteiro, ao menos me dizem que função usar, me de um caminho!

 

Ps.: Depois que esta parte ficar pronta, ai partimos para a exibição em javascript.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cada usuário terá uma data? Existe um cadastro? Se sim controle isto pelo banco de dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cada usuário terá uma data? Existe um cadastro? Se sim controle isto pelo banco de dados.

 

estas são as caracteristica:

 

 


  •  
  • Esta página é um jogo;

 


  •  
  • Ela (á pagina) é restrita;


  •  
  • A maior parte do jogo se baseia em "tempo", ou sejá, tempo para atacar, tempo para comercializar etc;
  • Ex.:digamos que você queira atacar um jogador, terá um sistema de cordenada, digamos então que, após o PHP fazer um certo calculo descobre que a distancia entre o "alvo" e você é igual á 2. E a tropa com que está atacando anda 300 segundos por campo. Agora atribuimos os dados em variaveis ($distancia=2; e $velocidade=300;);
  • Agora que você mandou atacar, quero que exiba as seguintes informações:
  • Que dia e que horas ele vai chegar (data de chegada: 10/04/2012 às 15:27:30 horas);
  • E uma contagem regressiva ao lado (Tempo para a chegada: 100:25:14 horas).
     

Observação 1: Se o usuário mudar a data e/ou a hora do pc, não vai modificar este sistema, pois ele tem que pegar a hora no servidor;

Observação 2: Se o usuario deslogar e voltar mais tarde, a contagem tem que ser a mesma, não da onde ele parou, mas no tempo certo, pois ela nunca para... até chegar a 0(zero), ela fica contando mesmo com o usuário deslogado;

Observação 3: Quando chegar a 0(zero), a contagem desaparece, e pode exibir uma mensagem;

 

 

Agora vou exibir o que seria parte deste script "sonhado":

 

$distancia=2;
$velocidade=300;
$tempo=$distancia*$velocidade;//600 segundos****

//descobrir quantas horas isso corresponde
$_hora = intval($tempo / 3600);
$_marcador = $tempo % 3600;
$_minuto = intval($_marcador / 60);
$_segundos = $_marcador % 60;

echo "$_dias dia(s) $_hora hora(s) $_minuto minuto(s) $_segundos segundo(s)<br>";

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em resumo, todas as ações terão que ser controladas pelo banco de dados. Não tem outra maneira.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em resumo, todas as ações terão que ser controladas pelo banco de dados. Não tem outra maneira.

 

Você pode dar detalhes? Um exemplo?

 

Tpw, eu pensei, em armazenar a data futura na banco de dados, assim cada vez que o usuário logar, ela será carregada. Porem, após descobrir quantos segundos vai demorar para o ataque, eu não sei como jogar isso para uma data futura no php. EX.: 600 segundos, como digo que dia e hora será na variável "$dia_hora_evento"? Como jogo estes 600 segundos á frente?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O cálculo do tempo é o mais simples, o MySQL tem o DATE_ADD, o PHP tem o strtotime que dá pra fazer isto também.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O cálculo do tempo é o mais simples, o MySQL tem o DATE_ADD, o PHP tem o strtotime que dá pra fazer isto também.

 

Ok! Vou dar uma pesquisada sobre isso e retorno aqui...Valew pela ajuda!

 

 

 

por favor. Não fechem ainda este tópico! Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok! Vou dar uma pesquisada sobre isso e retorno aqui...Valew pela ajuda!

 

 

 

por favor. Não fechem ainda este tópico! Obrigado.

 

Ok, deu certo... vlw mesmo cara!!!

 

ps.:Desculpe a demora!

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.