Auteur Sujet: [Aide] Problème de compteur javascript  (Lu 3605 fois)

Hors ligne skyvador

  • Membre Complet
  • ***
  • Messages: 149
  • Karma: +0/-0
    • Star Tactics
[Aide] Problème de compteur javascript
« le: 14 septembre 2009 à 22:10:48 »
Bonjour les amis,
j ai un petit script qui me permet d'indiquer aux joueurs quand aura lieu le prochain tour, le problème est que j'aurai besoin que le dit script ne se base pas sur l'heure du pc du joueur mais bien celle du serveur, mais cela dépasse mes connaissances :/
un petit coup de main?

<script type="text/javascript">
<!-- //start

dateFuture = new Date(2009,8,14,21,22,00);

function GetCount(){

dateNow = new Date();
amount = dateFuture.getTime() - dateNow.getTime();
delete dateNow;

// time is already past
if(amount < 0){
document.getElementById('countbox').innerHTML="En attente";
}
// date is still good
else{
days=0;hours=0;mins=0;secs=0;out="";

amount = Math.floor(amount/1000);

days=Math.floor(amount/86400);
amount=amount%86400;

hours=Math.floor(amount/3600);
amount=amount%3600;

mins=Math.floor(amount/60);
amount=amount%60;

secs=Math.floor(amount);

if(days != 0){out += days +" jour"+((days!=1)?"s":"")+", ";}
if(days != 0 || hours != 0){out += hours +" heure"+((hours!=1)?"s":"")+", ";}
if(days != 0 || hours != 0 || mins != 0){out += mins +" minute"+((mins!=1)?"s":"")+", ";}
out += secs +" secondes";
document.getElementById('countbox').innerHTML=out;

setTimeout("GetCount()", 1000);
}
}

window.onload=GetCount;

//-->
</script>

 
Star Tactics La saga des étoiles
http://www.star-tactics.com/

Babylon 5, le jeu en ligne (V2)
http://www.skyvador.com/pbem/

Hors ligne Prelude

  • Administrateur
  • Membre Héroïque
  • *****
  • Messages: 1155
  • Karma: +9/-0
    • Mon blog
Re : [Aide] Problème de compteur javascript
« Réponse #1 le: 14 septembre 2009 à 23:19:24 »
Malheureusement, le Javascript est exécute côté client. Donc, c'est l'heure du client qui est pris en compte. Si tu souhaites avoir l'heure du serveur, pas 36 solutions, il te faut jongler avec l'Ajax.
Maintenant, tout dépend de la librairie que tu utilises déjà (JQuery par exemple). Mais en gros, il te faut un fichier Php qui fait un écho de l'heure du serveur (ou time() ) et en Ajax, récupérer le contenu de ce fichier. Ca, c'est si tu veux un timing précis. Si le timing n'est pas avec une grande précision, tu peux toujours préciser au javascript le décalage éventuel en indiquant directement en Php le temps de départ par exemple.

Hors ligne guile

  • Membre Junior
  • **
  • Messages: 56
  • Karma: +1/-0
Re : [Aide] Problème de compteur javascript
« Réponse #2 le: 15 septembre 2009 à 23:49:32 »
Moi j'ai eu une solution pour ça : ton serveur (ex: php) va initialiser une variable javascript qui servira de base au temps.

Imagine donc la chose :
variable javascript origineDesTemps = 1234567831; // le timestamp du serveur (php)
variable javascript compteurDeSecondes = 0;

puis tu appelles au chargement de la page une fonction qui affiche ton temps restant en fonction de origineDesTemps + compteurDeSecondes, qui incrémente le nombre de secondes
Et qui appelle ça :
setTimeout('maFonctionHorloge()', 1000);      // ça lance la fonction d'horloge dans une seconde

Résultat :
Ta page se base sur une heure serveur et non plus une heure locale!

J'ai personnellement juste un petit soucis : les zones horaires qui sont un vrai foutoire (avec les heures d'été/hiver aux déclenchement différents entre les pays)

Si tu aimes cette solution, et n'arrives pas à formaliser ma solution, tu peux me contacter...

Hors ligne skyvador

  • Membre Complet
  • ***
  • Messages: 149
  • Karma: +0/-0
    • Star Tactics
Re : [Aide] Problème de compteur javascript
« Réponse #3 le: 16 septembre 2009 à 08:42:15 »
Okidoki, merci pour ces conseils les amis :)

Je vais voir sans doute pour refaire le tout en php, c'est moins dynamique mais plus stable, mais merci en tout cas :)
Star Tactics La saga des étoiles
http://www.star-tactics.com/

Babylon 5, le jeu en ligne (V2)
http://www.skyvador.com/pbem/