laubro
Messages postés186Date d'inscriptionjeudi 23 décembre 2004StatutMembreDernière intervention 9 juillet 2013
-
31 mai 2009 à 15:26
laubro
Messages postés186Date d'inscriptionjeudi 23 décembre 2004StatutMembreDernière intervention 9 juillet 2013
-
7 juin 2009 à 16:36
Bonjour
j'ai trouvé un petit script sympas de compte a rebourg ici mais je bloque sur l'écart entre l'heure serveur et l'heure de la machine, en effet c'est des annonces aux enchère, j'affiche le temps restant donc avec ce scrip, sauf que le script se base sur l'heure machine mais que je selectionne les annonces actives en php, donc sur la base de l'heure du serveur et j'ai un décalage d'envrion 8 minutes. Alors le soucis c'es qu'un annonce affiche un delais restant de 9mn et si je rafraichie la page ellle disparait car mon script php la concidere passée en délais vu le décalage.
Je voudrais donc que le script prenne la base de l'heure serveur pour démarrer le compte a rebourg (quitte a avoir un decalage de quelques minutes avec la machine, le tout étant d'être cohérent entre le temps affiché restant et le tri fait par le script.
j'ai essayé de definir date1 en php avec le meme format que date2, ça calcul mais ne defile plus le compte a rebourg !!!!
je vous mets le script si vous avez une solution se serait sympas
<script type="text/JavaScript">
function Rebour_<?php echo $auction->id; ?>() {
var Affiche=document.getElementById("Compte_<?php echo $auction->id; ?>");
var date1 = new Date (); // c'est la que je bloque
var date2 = new Date ("<?php echo $compte_date; ?>");
// Date et heure de fin d'enchere, info prise dans la bdd et formatée via php : m d H:i:s Y (ex : 05 31 12:00:00 2009)
var sec = (date2 - date1) / 1000;
var n = 24 * 3600;
if (sec > 0) {
j = Math.floor (sec / n);
h = Math.floor ((sec - (j * n)) / 3600);
mn = Math.floor ((sec - ((j * n + h * 3600))) / 60);
sec = Math.floor (sec - ((j * n + h * 3600 + mn * 60)));
Affiche.innerHTML = "" + j +" J "+ h +" h "+ mn +" m "+ sec + " s ";
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 201515 1 juin 2009 à 15:49
Bonjour,
pas tout suivi ton explications, mais
le décalage serveur/micro est quasi obligatoire,
"il suffit" d'en tenir compte
ch'tiot exemple qui affiche
<label id="afflbl"></label>
<script>
var lab=document.getElementById("afflbl");
var ds=new Date("<?php echo date("F j, Y, g:i a");?>");
//ça c'est la date du serveur
var dm=new Date();
//ça c'est date du micro
var diff=ds-dm;
//ça c'est la différence
appel();
function appel()
{ lab.innerHTML=new Date(Date.parse(new Date())+diff);
// date heure rectifiée
setTimeout(appel,1000);
}
</script>
laubro
Messages postés186Date d'inscriptionjeudi 23 décembre 2004StatutMembreDernière intervention 9 juillet 2013 7 juin 2009 à 15:55
Salut
en fait ton code m'as permis de trouver l'heure serveur et j'ai donc adapté l'ensemble. Par contre, autant cela fonctionne impec sous FF autant sous IE et safari cela ne renvoi pas dans mon label, pourtant j'ai testé dans un alert(); et cela afiche bien dedans mais pas dans mon label, si vous avez une idée du pourquoi/comment ?
<script type="text/JavaScript">
var lab=document.getElementById('afflbl');
var ds=new Date('<?php echo date("F j, Y, g:i a");?>');
//ça c'est la date du serveur
var dm=new Date();
//ça c'est date du micro
var diff=ds-dm;
//ça c'est la différence
appel();
function appel()
{
lab.value=new Date(Date.parse(new Date())+diff);
// date heure rectifiée
setTimeout(appel,1000);
}
</script>
<script type="text/JavaScript">
function Rebour_<?php echo $auction->id; ?>() {
var Affiche=document.getElementById('Compte_<?php echo $auction->id; ?>');
var test = document.getElementById('afflbl').value;
var date1 = new Date (test);
var date2 = new Date ('<?php echo $compte_date; ?>'); // Date et heure de l'événement
var sec = (date2 - date1) / 1000; // Temps donné en millièmes de seconde
var n = 24 * 3600; //nombre de secondes dans un jour
if (sec > 0) {
j = Math.floor (sec / n);
h = Math.floor ((sec - (j * n)) / 3600);
mn = Math.floor ((sec - ((j * n + h * 3600))) / 60);
sec = Math.floor (sec - ((j * n + h * 3600 + mn * 60)));
Affiche.innerHTML = '' + j +' J '+ h +' h '+ mn +' m '+ sec + ' s ';
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 201515 7 juin 2009 à 16:17
Bonjour,
1°
function appel()
{ lab.value=new Date(Date.parse(new Date())+diff); ....
or
donc, tu n'affiches rien
quand à ta fonction function Rebour_<?php echo $auction->id; ?>() {
???? pourquoi un nom généré par le php ? je ne comprned pas
de toute manière, il nous faudrait la page générée ! pas le php,
car comment on devine $auction->id ???
laubro
Messages postés186Date d'inscriptionjeudi 23 décembre 2004StatutMembreDernière intervention 9 juillet 2013 7 juin 2009 à 16:27
en fait il y a plusieurs produits aux encheres sur la pages, donc je recupere l'id de l'enchere dans la bdd avec le php et je nomme ensuite avec cet identifiant pour bien les différentier les unes des autres, que les information utilisée correspondent......
apparament ça vient d'un soucis de formatage de date2 récupérée en php dans la bdd aussi, donc je suis en rain de tester différents format...
Vous n’avez pas trouvé la réponse que vous recherchez ?
laubro
Messages postés186Date d'inscriptionjeudi 23 décembre 2004StatutMembreDernière intervention 9 juillet 2013 7 juin 2009 à 16:31
Laubro
apparament c'était bien un probleme de formatage de la date2, je passai par un script joomla mais cela mettait au format français "Juin" au lieu de June par exemple, donc je viens de le codé avec mktime et bingo sous safari ça marche reste plus qu'a tester sous IE (le temps que mon super vista veuille bien s'allumer....)
merci de ton aide