Regressive Count Script

-1

I would like to know how I can make the script below work as follows in case it is a countdown timer, but in case it counts up a date posted on it and comparing it with the current date by counting in the case there When it reaches 0 , the message appears.

The case is that I would like to know how to put this script to work as follows, it doing a 30 second count every time the page is updated after 30 seconds to appear the text being that I need it to do this calculation as I said taking the current date and if it updates 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>

counter.php

<?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 large to be put here.

The reason for the change and adapt it to display URLs.

    
asked by anonymous 22.10.2014 / 08:14

4 answers

1

As you said, maybe JavaScript is a lot better because in 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 echo in return, but the Ajax request expects a JSON response.

The most correct 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 browsers development tools such as Firebug. Because the console can handle the errors that may be occurring in request .

For more information about json_encode : link

    
22.10.2014 / 18:32
2

I did not understand the reason for doing this with PHP, since it can be done with Javascript.

Example: link

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);
}
    
22.10.2014 / 09:35
2

Why not use a jQuery plugin to do this?

/*
* 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><divclass="contador">
<h1></h1>
</div>

Link: Final Countdown jQuery

    
22.10.2014 / 18:03
0

insert php tags 100% working code

  #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: link

    
26.02.2017 / 14:35