Regressive Count Script

Asked

Viewed 10,222 times

-1

I wonder how I can make the script below work as follows in case it and a countdown comes the put it in case it makes a count taking a date posted on it and comparing with the current date doing the count in the case there when it comes to 0 message appears.

The case is that I would like to know how to put this script to work as follows, he doing a 30 second count every time the page is updated then pass the 30 seconds appear the text and I need him to do this calculation as I said taking the current date and if update the page as said the count returns again.

Below the scripts

index.html

<!doctype html>
<html>
	<head>
		<title>Contador em PHP</title>
		<script type="text/javascript" src="jquery.js"></script>
		<script type="text/javascript">
			$(document).ready(function(){

				// Requisicao AJAX
				var requisicao = function(){
					$.ajax({
						url: "contador.php"
					}).done(function(resultado){
						// Exibe o resultado no elemento com ID contador
						$("#contador").html(resultado);
					});
				};
				
				// Executa a requisicao com intervalo de 100ms
				setInterval(requisicao, 100);
			});    			
		</script>
	</head>
	<body>
		<p>Faltam <span id="contador"></span> segundos para o fim do mundo!</p>
	</body>
</html>

php counter.

<?php

    // Define as datas
    $data_atual = date('d-m-Y h:i:s');
    $data_final = date('2015-12-21');

    // Converte as datas para a hora UNIX e realiza o calculo da diferenca
    $diferenca  = strtotime($data_final) - strtotime($data_atual);

    // Exibe o resultado se ele for positivo. Caso seja negativo, exibe 0.
    echo ($diferenca >= 0) ? $diferenca : 0;    

?>

jQuery.js too big to be put here.

The reason for the change and adapt it to show Urls.

4 answers

2

I did not understand why to do this with PHP, since it can be done with Javascript.

Example: http://jsfiddle.net/xackzsz7/

function contador() {
// data informada
valInput = $("#data").val();

contar = setInterval(function() {
    // data atual
    data1 = new Date();
    // converte string em milisegundos
    data2 = Date.parse(new Date(valInput));

    diferenca = data2 - data1;

    // exibe a mensagem e para a repetição
    if (diferenca <= 0) {
        $("#contador").text('0');
        clearInterval(contar);
    } else {
        //dias  = Math.floor( diferenca / (1000*60*60*24) );
        //horas = Math.floor( diferenca / (1000*60*60) );
        //minutos  = Math.floor( diferenca / (1000*60) );
        segundos  = Math.floor( diferenca / 1000 );

        //dd = dias;
        //hh = horas - dias  * 24;
        //mm = minutos  - horas * 60;
        //ss = segundos  - minutos  * 60;

       $("#contador").text(
                //dd + ' dias ' +
                //hh + ' horas ' +
                //mm + ' minutos ' +
                //ss = ' segundos ' +
                segundos + ' segundos');

    }
},1000);
}
  • Try to explain better why to use Javascript and not PHP and why to do it this way.

  • Or put another way, code is cool but an explanation, however small, makes the answer much more useful to visitors].

2

Why not use a jQuery plugin to do this procedure ?

/*
* Não vai executar por que eu não apontei os arquivos.
* Isso é somente um exemplo, se quiser posso mandar um exemplo funcional
*/ 

$(".contador h1").countdown("2014/11/01", function(event) {
  $(this).text(event.strftime('%H:%M:%S'));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="contador">
<h1></h1>
</div>

Link: Final Countdown jQuery

1


As they said, maybe doing Javascript is much better because this way you end up making N requests for no reason.

But trying to answer your question, the problem is that you are simply giving a echo return, but the Ajax request expects a JSON response.

The right thing would be:

<?php

// Define as datas
$data_atual = date('d-m-Y h:i:s');
$data_final = date('2015-12-21');

// Converte as datas para a hora UNIX e realiza o calculo da diferenca
$diferenca  = strtotime($data_final) - strtotime($data_atual);

// Exibe o resultado se ele for positivo. Caso seja negativo, exibe 0.
$retorno = ($diferenca >= 0) ? $diferenca : 0;    

//considero uma boa prática setar o header da requisição
header('Content-Type: application/json');

//aqui retornamos de maneira com que a resposta possa ser capturada pela requisição ajax
echo json_encode($retorno);
?>

Another good practice is to make use of the development tools of browsers like Firebug. Because in it the console can print the errors that may be happening in request.

For more information on the json_encode: http://php.net/manual/en/function.json-encode.php

0

enter the code php tags 100% working

  #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)";

source: http://www.l2jbrasil.com/index.php?/topic/113420-solved countdown/

Browser other questions tagged

You are not signed in. Login or sign up in order to post.