Ir para conteúdo

POWERED BY:

Arquivado

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

inflames

[Resolvido] Contagem regressiva c/ data do servidor

Recommended Posts

Olá pessoal

 

Pessoal to quebrando a cabeça aqui, achei esse codigo de contagem regressiva, mas não estou conseguindo modificar pq naum manjo quase nada de js, a 2 dias to quebrando a cabeça e não to conseguindo fazer isso.

 

É o seguinte o código abaixo ele pega a hora do cliente, qria modificar para q ele pegue a hora do server, pois se o cliente mudar a hora no relogio ele consegue passar pela contagem,

 

Como eu faço para q a varialvel "hoje" pegue a hora do servidor e não do cliente

 

Desde já agradeço

 

<script language="javascript"> 

var YY = 2010;
var MM = 11;
var DD = 11;
var HH = 11;
var MI = 25;
var SS = 00; 

function atualizaContador() {


  var hoje = new Date();
  var futuro = new Date(YY,MM-1,DD,HH,MI,SS); 

  var ss = parseInt((futuro - hoje) / 1000);
  var mm = parseInt(ss / 60);
  var hh = parseInt(mm / 60);
  var dd = parseInt(hh / 24); 

  ss = ss - (mm * 60);
  mm = mm - (hh * 60);
  hh = hh - (dd * 24); 

  var faltam = '';
  faltam += (dd && dd > 1) ? dd+' dias, ' : (dd==1 ? '1 dia, ' : '');
  faltam += (toString(hh).length) ? hh+' : ' : '';
  faltam += (toString(mm).length) ? mm+' : ' : '';
  faltam += ss+' hs'; 

  if (dd+hh+mm+ss > 0) {
    document.getElementById('contador').innerHTML = faltam;
    setTimeout(atualizaContador,1000);
  } else {
    document.getElementById('contador').innerHTML = 'ENCERRADO!!!!';
	document.getElementById('contador22').innerHTML = 'ENCERRADO!!!!';
    setTimeout(atualizaContador,1000);
  }
}

</script> 


Valeu pessoal

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como JavaScript é uma linguagem cliente, não é possível fazer isso. Você deverá ter algum Apache instalado, ou IIS, para pegar o horário/data com as extensões .php, .asp ou .shtml.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa pessoal obrigado por responder.

 

Então eu uso servidor php.

 

uma das minhas tentaivas eu fiz o seguinte na var hoje

 

 

var hoje = new Date(<?php echo date('Y');?>,<?php echo date('m');?>,<?php echo date('s');?>,<?php echo date('H');?>,<?php echo date('i');?>,<?php echo date('s');?>);

 

 

mas ai o cronometro fica parado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

posta o código gerado pelo php por favor.

 

 

opa augustoclaro

 

não sei se é isso q você quer, mas o php retorna o sequinte

 

var hoje = new Date(2010,11,15,17,41,15);

 

valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

estranhoo... dê um alert em futuro-hoje parav er o que retorna.

 

 

opa

 

não sei se é isso, como falei sou meio novato em js

 

fiz assim

 

var ss = parseInt((futuro - hoje) / 1000);

alert (futuro - hoje);

 

 

ai retornou, - 5347609000

 

obrigado pela ajuda

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ach oque já sei, repare no seu php:

 

var hoje = new Date(<?php echo date('Y');?>,<?php echo date('m');?>,<?php echo date('s');?>,<?php echo date('H');?>,<?php echo date('i');?>,<?php echo date('s');?>);

você pucha os segundos no lugar do dia. Arrume isso e vê se dá certo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ach oque já sei, repare no seu php:

 

var hoje = new Date(<?php echo date('Y');?>,<?php echo date('m');?>,<?php echo date('s');?>,<?php echo date('H');?>,<?php echo date('i');?>,<?php echo date('s');?>);

você pucha os segundos no lugar do dia. Arrume isso e vê se dá certo

 

 

Não tinha visto, valeu pelo toque, mas mesmo assim a contagem fica pausada.

 

valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

pega o código inteiro gerado pelo php (a página toda) e posta aqui para eu testar por favor.

 

 

Opa, valeu mesmo pela força

 

o codigo tá bem cru ainda, teste ele sem todos os codigos, mas mesmo assim dá o mesmo problema, do jeito que vou postar o codigo o cronometro da como encerrado, se eu colocar -1 ao lado do "date('m')-1" ele vai mas do mesmo jeito fica parado

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script language="javascript"> 

var YY = 2010;
var MM = 11;
var DD = 17;
var HH = 14;
var MI = 00;
var SS = 00; 

function atualizaContador() {
var hoje = new Date(<?php echo date('Y');?>,<?php echo date('m');?>,<?php echo date('d');?>,<?php echo date('H');?>,<?php echo date('i');?>,<?php echo date('s');?>);

  var futuro = new Date(YY,MM-1,DD,HH,MI,SS); 

  var ss = parseInt((futuro - hoje) / 1000);
  var mm = parseInt(ss / 60);
  var hh = parseInt(mm / 60);
  var dd = parseInt(hh / 24); 

  ss = ss - (mm * 60);
  mm = mm - (hh * 60);
  hh = hh - (dd * 24); 

  var faltam = '';
  faltam += (dd && dd > 1) ? dd+' dias, ' : (dd==1 ? '1 dia, ' : '');
  faltam += (toString(hh).length) ? hh+' : ' : '';
  faltam += (toString(mm).length) ? mm+' : ' : '';
  faltam += ss+' hs'; 

  if (dd+hh+mm+ss > 0) {
    document.getElementById('contador').innerHTML = faltam;
    setTimeout(atualizaContador,1000);
  } else {
    document.getElementById('contador').innerHTML = 'ENCERRADO!!!!';
	document.getElementById('contador22').innerHTML = 'ENCERRADO!!!!';
    setTimeout(atualizaContador,1000);
  }
}

</script> 

</HEAD>

<BODY onLoad="atualizaContador()" >

<span id="contador"></span>

<body>
</body>
</html>

abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

amigo, deste jeito ele funcionaria perfeitamente:

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script language="javascript">

var YY = 2010;
var MM = 11;
var DD = 17;
var HH = 14;
var MI = 00;
var SS = 00;

function atualizaContador() {
 var hoje = new Date(<%=year(now)%>,<%=month(now)%>,<%=day(now)%>,<%=hour(now)%>,<%=minute(now)%>,<%=second(now)%>); //troque pelo php =D

var futuro = new Date(YY,MM,DD,HH,MI,SS);

var ss = parseInt((futuro - hoje) / 1000);
var mm = parseInt(ss / 60);
var hh = parseInt(mm / 60);
var dd = parseInt(hh / 24);

ss = ss - (mm * 60);
mm = mm - (hh * 60);
hh = hh - (dd * 24);

var faltam = '';
faltam += (dd && dd > 1) ? dd+' dias, ' : (dd==1 ? '1 dia, ' : '');
faltam += (toString(hh).length) ? hh+' : ' : '';
faltam += (toString(mm).length) ? mm+' : ' : '';
faltam += ss+' hs';

if (dd+hh+mm+ss > 0) {
document.getElementById('contador').innerHTML = faltam;
} else {
document.getElementById('contador').innerHTML = 'ENCERRADO!!!!';
}
setTimeout("atualizaContador();",1000);
}

</script>

</HEAD>

<BODY onload="atualizaContador();" >

<span id="contador"></span>

</body>
</html>

Ele não funciona porque a página é gerada com a data do servidor, ou seja, a variável hoje nunca muda, logo a contagem fica parada.

 

Solução: ajax.

Compartilhar este post


Link para o post
Compartilhar em outros sites

nãão, vce usa ajax neste mesmo..

você cria uma página em php que escreva na tela

ano/mes/dia/hora/minuto/segundo

 

puxa isso com ajax (com jquery vce faz isso em 3 linhas) e usa split("/") para pegar cada valor e por na var date e pronto, tudo certo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

nãão, vce usa ajax neste mesmo..

você cria uma página em php que escreva na tela

ano/mes/dia/hora/minuto/segundo

 

puxa isso com ajax (com jquery vce faz isso em 3 linhas) e usa split("/") para pegar cada valor e por na var date e pronto, tudo certo.

 

 

bem não tenho a minima idia como se faz, rsrsrsr, bem mas valeu pela força.

 

brigadao

Compartilhar este post


Link para o post
Compartilhar em outros sites

baixa o jquery, inclui ele na página, cria a página que eu falei com o nome data.php por exemplo e usa assim:

 

function atualizaContador() {
$.get("data.php",function(data){
dataatual = data;
});
 var hoje = new Date(dataatual.split("/")[0],dataatual.split("/")[1],dataatual.split("/")[2],dataatual.split("/")[3],dataatual.split("/")[4],dataatual.split("/")[5]);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola, desculpe puxar o topico novamente.

 

Mas estou com este mesmo problema, uso este codigo javascript pra fazer uma contagem regressiva, mas nao consigo fazer com que a data seja puxada do servidor e que nao seja alterada de acordo com o relogio do sistema do usuario.

 

Tentei implementar o que o augustoclaro disse, mas nao conseguir fazer funcionar.

 

A pagina que contem o contador ja tem o jquery, criei o data.php, e adicionei este codigo acima, mas nada é mostrado na tela.

 

Se alguem puder ajudar, agradeço.

 

vlw

 

<script type="text/javascript">
<?php
$status = $dados['status']; 
$datahora = $dados['datahorafim'];
list($data, $hora) = explode(' ', $datahora);
list($ano, $mes, $dia) = explode('-', $data);
list($hora, $minuto, $segundo) = explode(':', $hora);
?>
var YY = "<?php echo $ano;?>";
var MM = "<?php echo $mes;?>";
var DD = "<?php echo $dia;?>";
var HH = "<?php echo $hora;?>";
var MI = "<?php echo $minuto;?>";
var SS = "<?php echo $segundo;?>";
var STS = "<?php echo $status;?>";

function atualizaContador() {
 $.get("php/data.php",function(data){
 dataatual = data;
 });
 var hoje = new Date(dataatual.split("/")[0],dataatual.split("/")[1],dataatual.split("/")[2],dataatual.split("/")[3],dataatual.split("/")[4],dataatual.split("/")[5]);

 var futuro = new Date(YY,MM-1,DD,HH,MI,SS);

 var ss = parseInt((futuro - hoje) / 1000);
 var mm = parseInt(ss / 60);
 var hh = parseInt(mm / 60);
 var dd = parseInt(hh / 24);

 ss = ss - (mm * 60);
 mm = mm - (hh * 60);
 hh = hh - (dd * 24);

 var faltam = '';
 faltam += (dd && dd > 1) ? dd+'dias, ' : (dd==1 ? '1 dia, ' : '');
 faltam += (toString(hh).length) ? hh+'h, ' : '';
 faltam += (toString(mm).length) ? mm+'m e ' : '';
 faltam += ss+'s';

 if (STS == 'e'){
 document.getElementById('contador').innerHTML = 'Encerrada';
 }
 else {
    if (dd+hh+mm+ss > 0) {
    document.getElementById('contador').innerHTML = faltam;
    setTimeout(atualizaContador,1000);
    }
    else {
 document.getElementById('contador').innerHTML = 'Encerrada';
 location.href="php/alterarstatus.php?id=<?php echo $id?>";
    }
 }
}		
</script>

 

data.php

<?php
$data=date('Y/m/d/H/i/s');
echo $data
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, consegui resolver.

 

Ficou assim:

 

<script type="text/javascript">
<?php 
$status = $dados['status'];
$datahora = $dados['datahorafim'];
list($data, $hora) = explode(' ', $datahora);
list($ano, $mes, $dia) = explode('-', $data);
list($hora, $minuto, $segundo) = explode(':', $hora);
?>

var YY = "<?php echo $ano;?>";
var MM = "<?php echo $mes;?>";
var DD = "<?php echo $dia;?>";
var HH = "<?php echo $hora;?>";
var MI = "<?php echo $minuto;?>";
var SS = "<?php echo $segundo;?>";
var STS = "<?php echo $status;?>";

function atualizaContador() {
 $.post("php/data.php",function(data){
 var dataatual = data;

 var hoje = new Date(dataatual.split("/")[0],dataatual.split("/")[1]-1,dataatual.split("/")[2],dataatual.split("/")[3],dataatual.split("/")[4],dataatual.split("/")[5]);
 var futuro = new Date(YY,MM-1,DD,HH,MI,SS);

 var ss = parseInt((futuro - hoje) / 1000);
 var mm = parseInt(ss / 60);
 var hh = parseInt(mm / 60);
 var dd = parseInt(hh / 24);

 ss = ss - (mm * 60);
 mm = mm - (hh * 60);
 hh = hh - (dd * 24);

 var faltam = '';
 faltam += (dd && dd > 1) ? dd+'dias, ' : (dd==1 ? '1 dia, ' : '');
 faltam += (toString(hh).length) ? hh+'h, ' : '';
 faltam += (toString(mm).length) ? mm+'m e ' : '';
 faltam += ss+'s';

 if (STS == 'e'){
 document.getElementById('contador').innerHTML = 'Encerrada';
 }
 else {
    if (dd+hh+mm+ss > 0) {
    document.getElementById('contador').innerHTML = faltam;
    setTimeout(atualizaContador,1000);
    }
    else {
 document.getElementById('contador').innerHTML = 'Encerrada';
 location.href="php/alterarstatus.php?id=<?php echo $id?>";
    }
 }
})
}		
</script>
<script type="text/javascript">

 

<?php
$data=date("Y/m/d/H/i/s");
print $data;
?>

 

:)

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.