Ir para conteúdo

Arquivado

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

Gilberto Jr

Cronometro Regressivo Com While

Recommended Posts

Bom dia;



Estou tento problema com um cronometro regressivo que eu tenho. Eu tenho esse código que mostra todas as informações que esta no banco de dados com a pesquisa. Nesse select eu trago a data limite que eu ja tenho cadastrado no banco de dados.


<table border="1">
<%
set atendimento = conn.execute("select atend.datalimite as datalimite, cr.descricao as cr, atend.email as envioemail,cliente.contatoemail as email,atend.id_atendente as colaborador,cliente.id as idcliente,numero_chamado,data_chamado,hora_chamado,cliente.fantasia_apelido,atend.descricao,atend.os,atend.situacao,atend.id from tec_atendimentos as atend inner join tec_clientefornecedor as cliente on atend.id_loja = cliente.id inner join tec_c_responsabilidade as cr on atend.id_cr=cr.id inner join rede as rede on atend.id_rede=rede.id where atend.id in('17375','17376') order by id asc")
%>
<%
while atendimento.eof = false
%>
<tr>
<td><%=atendimento("id")%></td>
<td>
<%
datavalendo = atendimento("datalimite")
%>
<script language="javascript">
var YY = <%=year(datavalendo)%>;
var MM = <%=month(datavalendo)%>;
var DD = <%=day(datavalendo)%>;
var HH = 23;
var MI = 59;
var SS = 59;

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

if (ss < 10) {
ss = "0"+ss;
} else {
ss = ss;
}
if (mm < 10) {
mm = "0"+mm;
} else {
mm = mm;
}

if (hh < 10) {
hh = "0"+hh;
} else {
hh = hh;
}


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

if (dd+hh+mm+ss > 0) {
document.getElementById('contador').innerHTML = faltam;
setTimeout(atualizaContador,0);
} else {
document.getElementById('contador').innerHTML = 'ACABOU';
document.getElementById("btnSalvarp").disabled = true;
setTimeout(atualizaContador,0);
}
}

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

</td>
</tr>
<%
atendimento.movenext
wend
%>
</table>

Esse scripit faz um while só que o cronometro só pega no primeiro item monstrado. Não coloca o cronometro para cada linha. Só coloca na primeira linha.



Alguém pode me ajudar?


Compartilhar este post


Link para o post
Compartilhar em outros sites

Não duplique código e nem ID dentro do loop.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tirando para fora do loop, usando classes e aplicando um básico de programação funcional.

 

Exemplo didático com vários contadores:

http://wbruno.github.io/examples/time-counter/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz da forma que você orientou e deu certo.

 

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%
dim conn
'Criamos o objeto de conexão
Set conn = Server.CreateObject("ADODB.Connection") 
 
'Abrimos uma conexão com o banco de dados - [IMPORTANTE] altere os dados abaixo com as informações de sua base de dados
conn.Open("DRIVER={MySQL ODBC 5.1 Driver};SERVER=localhost;PORT=3306;DATABASE=basedados;USER=root;PASSWORD=123456;OPTION=3;")
'arquivo que checa se existe o login e a senha do usuario que esta tentando logar
%>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Contador</title>
</head>
 
<body>
 
<table border="1" style="width:300px; margin:auto;">
<%
set atendimento = conn.execute("select atend.flagfaturamento as flag, date(atend.datalimite) as datalimite, cr.descricao as cr, atend.email as envioemail,cliente.contatoemail as email,atend.id_atendente as colaborador,cliente.id as idcliente,numero_chamado,data_chamado,hora_chamado,cliente.fantasia_apelido,atend.descricao,atend.os,atend.situacao,atend.id from tec_atendimentos as atend inner join tec_clientefornecedor as cliente on atend.id_loja = cliente.id inner join tec_c_responsabilidade as cr on atend.id_cr=cr.id inner join rede as rede on atend.id_rede=rede.id where atend.situacao=1 or atend.situacao=5 order by id asc")
%>
<%
while atendimento.eof = false
%>
  <tr>
    <td><%=atendimento("id")%></td>
    <td>
<%
datavalendo = atendimento("datalimite")
hora = right(atendimento("hora_chamado"),8)
%>
<time data-end="<%=year(datavalendo)%>-<%=month(datavalendo)%>-<%=day(datavalendo)%>-<%hour(hora)%>-<%minute(hora)%>-<%second(hora)%>" class="counter"></time>
 
    </td>
  </tr>
 
<%
atendimento.movenext
wend
%>
</table>
 
<script src="js/time-counter.js"></script>
 
 
<script>
var $counters = [].slice.call(document.querySelectorAll('.counter'));
 
timeCounter($counters);
setInterval(function () {
  timeCounter($counters);
}, 1000);
</script>
</body>
</html>
<%
conn.Close()
'Destruímos o objeto
Set conn = Nothing
%>

 

Obrigado pela força.

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.