Ver Mensaje Individual
  #6 (permalink)  
Antiguo 18/03/2012, 07:50
Avatar de Lynxcraft
Lynxcraft
 
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 17 años, 1 mes
Puntos: 51
Respuesta: sincronizar reloj y php

bueno se que no debo ser yo el que te muestre los siguientes errores (que creo yo que lo son )ya que fui el que abrió este tema solicitando ayuda y va parecer que voy de listo pero no es asi es que simplemente me gusta ayudar y a los que me ayudan pues mas

tu código funciona pero hay un par de cosillas mientras lo probaba que no me cuadraban en sintaxis por ejemplo
intervalo = setTimeout("crono(), 1000");
a mi parecer si quieres que se ejecute el código cada segundo seria así
intervalo = setTimeout("crono()", 1000);
que diferencia hay que la primera aun que no de error estas ejecutando a cada milisegundo la función crono, sin pausa y la segunda hace esperar 1 segundo antes de que se ejecute;

en este caso retrasas la fecha un mes
mes = <?php echo date('n', $fecha)-1;?>

y aqui sumas un minuto
minutos = <?php echo date('i', $fecha)+1;?>

supongo que es el minuto de espera .


en este caso

Código:
serv_ahora.getFullYear(<?php date('Y', $fecha);?>);
serv_ahora.getMonth(<?php echo date('n', $fecha);?>);
serv_ahora.getDate(<?php echo date('d', $fecha);?>);
serv_ahora.getHours(<?php echo date('H', $fecha);?>);
serv_ahora.getMinutes(<?php echo date('i', $fecha);?>);
si que me sorprendió ya que todas las funciones que empiezan por get son para solicitar valores no para darles por lo que su sintaxis seria

Código:
serv_ahora.setFullYear(<?php echo date('Y');?>);
serv_ahora.setMonth(<?php echo date('n');?>);
serv_ahora.setDate(<?php echo date('d');?>);
serv_ahora.setHours(<?php echo date('H');?>);
serv_ahora.setMinutes(<?php echo date('i');?>);
probando tu código seria asi

Código:
<!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" xml:lang="es" lang="es">
<head>
<meta http-equiv="Content-Type" content="application/xhtml; charset=utf-8" />
<title></title>
<style type="text/css">
#calContador {width:450px;}
#calFondoEnunciado {background-color:#6B8E23;color:#FFFFFF;font-family:Arial;font-size:12px;border: 1px solid #C9C9C9;border-width: 1px 1px 0px 1px;text-align:center;}
#calCuerpo td{background-color:#6B8E23;color:#FFFFFF;font-family:Arial;font-size:11px;font-weight:bold;text-align:center;}
#calCuerpo td.cont{background-color:#FFFF00;color:#000000;width:50px;}
</style>

<?php
$fecha = time();
$fecha = strtotime('2012-3-18 14:20:00');
?>

<script type="text/javascript">
var intervalo=null;
function crono(){
var dia = <?php echo date('d', $fecha);?>, mes = <?php echo date('n', $fecha);?>, anio = <?php echo date('Y', $fecha);?>, hora = <?php echo date('H', $fecha);?>, minutos = <?php echo date('i', $fecha);?>; 
var fechaFinal = new Date(anio,mes,dia,hora,minutos);

var serv_ahora = new Date();
serv_ahora.setFullYear(<?php echo date('Y');?>);
serv_ahora.setMonth(<?php echo date('n');?>);
serv_ahora.setDate(<?php echo date('d');?>);
serv_ahora.setHours(<?php echo date('H');?>);
serv_ahora.setMinutes(<?php echo date('i');?>);
diferencia = fechaFinal.getTime() - serv_ahora.getTime()

segundostotales = parseInt(diferencia /1000);
minutostotales = parseInt(segundostotales/60);
horastotales = parseInt(minutostotales/60);
dias = parseInt(horastotales/24);
horas = parseInt(horastotales % 24);
minutos = parseInt(minutostotales % 60);
segundos = parseInt(segundostotales % 60);

falta = '<div id="calContador"><div id="calFondoEnunciado">Tiempo que Falta hasta el ' + dia + '/' + parseInt(mes+1) + '/' + anio + ' ' + hora + ':' + minutos + '</div><div id="calCuerpo"><table style="table-layout:fixed;" bgcolor="#C9C9C9" border="0px" cellspacing="1px" cellspadding="0px" width="450px"><tr>';

if(dias < 10) {dias = '0' + dias;}
if(horas < 10) {horas = '0' + horas;}
if(minutos < 10) {minutos = '0' + minutos;}
if(segundos < 10) {segundos = '0' + segundos;}

diasTxt = '<td class="cont">' + dias + '</td><td>Días</td>';
horasTxt = '<td class="cont">' + horas + '</td><td>Horas</td>';
minutosTxt = '<td class="cont">' + minutos + '</td><td>Minutos</td>';
segundosTxt = '<td class="cont">' + segundos + '</td><td>Segundos</td></tr></table></div></div>';

if (diferencia <= 999) {
contadorCompleto = falta + '<td class="cont">Se ha cumplido el tiempo</td></tr></table></div></div>';
if(intervalo)
clearTimeout(intervalo);
}
else
{
contadorCompleto = falta + diasTxt + horasTxt + minutosTxt + segundosTxt
intervalo = setTimeout("crono()", 1000);
}
document.getElementById('contador_regresivo').innerHTML = contadorCompleto;
}
window.onload=function(){crono();};
</script>
</head>
<body>
<div id="contador_regresivo" style="text-align:center"></div>
</body>
</html>
con esto nos evitaríamos fallos entre fechas

Como ya he dicho antes tu código me ayudo muchísimo si el no abría terminado pero como he visto estas cosillas pues he pensado que en algún momento te podría estar fallando y no te estés dando cuenta, como bien dices los códigos con fines didácticos estas correcciones me parecen importantes, por si a otro le hace falta

Muchas gracias un abraso
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft

Última edición por Lynxcraft; 18/03/2012 a las 07:57