Faire décompter le temps restant dynamiquement entre deux dates
Bonjours
J'ai fais une fonction de compte à rebour qui fonctionne avec la date du client en dynamique + la date de fin en php.
J'ai reussit à mettre la date du serveur php dans le javascript. Le compte à rebour s'affiche mais il devient statique. Je suis obliger d'avoir recour à des refresh pour le voir défiler.
Ma Question est comment faire pour le re rendre dynamique ?
Code qui fonctionne avec une date de fin en php et une date du jour coté client de manière dynamique.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
<?php
session_start();
mysql_connect("localhost","root","");
mysql_select_db("ibe");
$a=26;
$sql ="SELECT date_fin FROM fr_part_demande_to_revendeur WHERE n_dem_part =".$a;
$af = mysql_query($sql);
$res = mysql_fetch_object($af);
$b = $res->date_fin;
echo "$b<br>";
$tableau = split('[- ]',$b);
$annee = $tableau[0];
$mois = $tableau[1];
$jours = $tableau[2];
$heures = $tableau[3];
$minutes = $tableau[4];
?>
<html>
<head>
<SCRIPT LANGUAGE="JavaScript">
function disp_delai()
{
document.forms[0].elements[0].value=delai(<?php echo $annee;?>,<?php echo $mois;?>,<?php echo $jours;?>,<?php echo $heures;?>,<?php echo $minutes;?>);
setTimeout("disp_delai()",1000);
}
function delai(annee,mois,jour,heure,min)
{
var date_fin=new Date(annee,mois-1,jour,heure,min);
var date_jour=new Date();
var tps=(date_fin.getTime()-date_jour.getTime())/1000;
var j=Math.floor(tps/3600/24);
tps=tps % (3600*24);
var h=Math.floor(tps / 3600);
tps=tps % 3600;
var m=Math.floor(tps/60);
tps=tps % 60
var s=Math.floor(tps);
var txt=j+"j "+h+"h"+m+"m"+s+"s";
return txt;
}
</script>
</head>
<body onLoad="disp_delai()">
<table border="1" align="center">
<tr>
<td align="center"><form><input type="text" name="disp_delai" value=""/></form></td>
</tr>
</table>
</body>
</html> |
Ca cela fonctionne mais si je replace le code rouge par
Code:
1 2
|
var date_jour=new Date(<?php echo date('Y,m-1,d,H,i,s');?>); |
pour avoir la date du serveur php.
Cela fonctionne aussi , mais le décompte automatique ne se fait plus, il faut que j'utilise le refesh de la page pour voir le temps restant défiler.
Que faut il modifier dans code si dessous pour cela redevienne dynamique avec la date du serveur.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
<?php
session_start();
mysql_connect("localhost","root","");
mysql_select_db("ibe");
$a=26;
$sql ="SELECT date_fin FROM fr_part_demande_to_revendeur WHERE n_dem_part =".$a;
$af = mysql_query($sql);
$res = mysql_fetch_object($af);
$b = $res->date_fin;
echo "$b<br>";
$tableau = split('[- ]',$b);
$annee = $tableau[0];
$mois = $tableau[1];
$jours = $tableau[2];
$heures = $tableau[3];
$minutes = $tableau[4];
?>
<html>
<head>
<SCRIPT LANGUAGE="JavaScript">
function disp_delai()
{
document.forms[0].elements[0].value=delai(<?php echo $annee;?>,<?php echo $mois;?>,<?php echo $jours;?>,<?php echo $heures;?>,<?php echo $minutes;?>);
setTimeout("disp_delai()",1000);
}
function delai(annee,mois,jour,heure,min)
{
var date_fin=new Date(annee,mois-1,jour,heure,min);
var date_jour=new Date(<?php echo date('Y,m-1,d,H,i,s');?>);
var tps=(date_fin.getTime()-date_jour.getTime())/1000;
var j=Math.floor(tps/3600/24);
tps=tps % (3600*24);
var h=Math.floor(tps / 3600);
tps=tps % 3600;
var m=Math.floor(tps/60);
tps=tps % 60
var s=Math.floor(tps);
var txt=j+"j "+h+"h"+m+"m"+s+"s";
return txt;
}
</script>
</head>
<body onLoad="disp_delai()">
<table border="1" align="center">
<tr>
<td align="center"><form><input type="text" name="disp_delai" value=""/></form></td>
</tr>
</table>
</body>
</html> |
Merci d'avance !!!!