Ir para conteúdo

POWERED BY:

Arquivado

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

charleskx

Contagem regressiva com jQuery Countdown + PHP

Recommended Posts

Galera é o seguinte.

Estou tentando criar um sistema de contagem regressiva utilizando o jQuery Countdown, quando tenho apenas um registro no banco de dados ele faz a contagem regressiva e no final exibe a mensagem corretamente, o problema surge quando inserido um novo registro no banco de dados

Ao invés do sistema tratar os dois diferentes ele incrementa o primeiro registro e o segundo fica zerado, como se não tivesse passado valor ou valores inseridos estivessem incorretos

 

 

index.php

<?php	include("class.php");	$conecta = new recordset();	$conecta->Conexao();?><html><head><meta charset="utf8"><title>Contagem regressiva - Jquery Countdown</title><script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script><script type="text/javascript" src="js/jquery.countdown.js"></script></head><body><?php	$sql = "SELECT * FROM ofertas";	$conecta->Resultados($sql);?></body></html>

class.php

<?php	class recordset{		public $host	= 'localhost';		public $user	= 'root';		public $pass	= '';		public $table	= 'contagem';				function Conexao(){			mysql_connect($this->host, $this->user, $this->pass) or die ('Erro ao se conectar. '.mysql_error());			mysql_select_db($this->table) or die ('Erro ao selecionar tabela. '.mysql_error());		}//Termina function Conexao				function Resultados($query){			$sql = mysql_query($query);			while($res = mysql_fetch_array($sql)){				echo '<script type="text/javascript">';				echo '$(document).ready(function(){';				echo '$(\'#contagem\').countdown({date: \''.$res['final'].'\'}, function(){';				echo '$(\'#contagem\').text(\'Oferta finalizada\');';				echo '});';				echo '});';				echo '</script>';								echo '<div id="contagem">';				echo '<span class="dias">00</span> Dias ';				echo '<span class="horas">00</span> horas ';				echo '<span class="minutos">00</span> minutos e ';				echo '<span class="segundos">00</span> segundos';				echo '</div><!--Fecha div contagem-->';			}		}//Termina function Seleciona	}?>

E o arquivo jquery.countdown.js

(function($){	$.fn.countdown = function(options, callback){		var settings = {'date': null};		if(options){			$.extend(settings, options);		}		this_sel = $(this);		function count_exec(){			eventDate = Date.parse(settings['date']) / 1000;			currentDate = Math.floor($.now() / 1000);						if(eventDate <= currentDate){			callback.call(this)				clearInterval(intval);			}						segundos	 = eventDate - currentDate;						dias 		 = Math.floor(segundos / (60 * 60 * 24));			segundos	-= dias * 60 * 60 * 24;						horas		 = Math.floor(segundos / (60 * 60));			segundos	-= horas * 60 * 60;						minutos		 = Math.floor(segundos / 60);			segundos	-= minutos * 60;						dias		 =(String(dias).length !== 2) ? '0' + dias : dias;			horas		 =(String(horas).length !== 2) ? '0' + horas : horas;			minutos		 =(String(minutos).length !== 2) ? '0' + minutos : minutos;			segundos	 =(String(segundos).length !== 2) ? '0' + segundos : segundos;						if(!isNaN(eventDate)){						this_sel.find('.dias').text(dias);			this_sel.find('.horas').text(horas);			this_sel.find('.minutos').text(minutos);			this_sel.find('.segundos').text(segundos)						}		}		count_exec();		interval = setInterval(count_exec, 1000);	}})(jQuery);

Não tenho a menor ideia do que possa ser, alguém pode me ajudar?

 

 

Up!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema não é com PHP, é com o JS. Você está setando como referência o elemento com o id contagem, mas semanticamente o ID é único na página, por isto acontece o que você citou, neste caso você terá que criar esses ids de firma dinâmica para diferenciar os diversos contadores.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema não é com PHP, é com o JS. Você está setando como referência o elemento com o id contagem, mas semanticamente o ID é único na página, por isto acontece o que você citou, neste caso você terá que criar esses ids de firma dinâmica para diferenciar os diversos contadores.

 

Poderia explicar como faria isso pelo JS?

Não tenho a menor ideia.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Explicar o que? Você não entendeu nada do que eu falei. O problema é o ID repetido, só isto. Crie ele de forma dinâmica dentro do laço (use um contador ou o ID da tabela) e pronto, vai funcionar, óbvio que se você tem 2 contadores você terá quer chamar 2 vezes a função que faz o contador funcionar..

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.