TourDeJeu, le réseau des jeux en ligne alternatifs : jeux web multijoueurs, jeux par forum. En savoir +

Flux RSS des discussions du forum : pour les joueurs, et pour les créateurs et MJ
  Reply to this topicStart new topicStart Poll

> Compte à Rebours Depuis Un Timestamp
Vorgat
Ecrit le : Samedi 22 Octobre 2005 à 12h44
Quote Post


Pro
*

Groupe : Membre
Messages : 177


Bonjour, j'aimerais pouvoir faire un décompte à partir d'un timestamp. Je stocke mes dates en timestamp et je les change grace à la fonction date.

Je sais que ce que je demande c'est du javascript, mais pour la fonction javascript, je dois d'abord faire mon changement de date ou alors dois-je donné mon timestamp ?

Sachant que j'y connais rien en javascript, quelqu'un pourrait m'aider ?

Cordialement,
Vorgat
PMEmail PosterUsers Website
Top
CerberusXt
Ecrit le : Samedi 22 Octobre 2005 à 13h37
Quote Post


Pro
*

Groupe : Membre
Messages : 135


Voila ce que j'ai à te proposer.
Il s'agit d'un script qui decompte le temps à partir d'un timestamp (donc d'une durée en seconde), une fois le compte à rebours fini il charge une autre page (ou bien il recharge la page actuelle aussi).
J'avais trouvé ce script sur un site de javascript il y a peu mais celui-ci ne decomptait que les minutes et les secondes, pas les heures. Je l'ai donc modifié pour qu'il le fasse.

Voila voila, on sent l'inspiration Ogame wink.gif

CODE
<script Language="JavaScript">

function display(){
rtime=etime-ctime;
if (rtime>3600)
h=parseInt(rtime/3600);
else{
h=0;
}
if (rtime-h*3600>60)
m=parseInt((rtime-h*3600)/60);
else{
m=0;
}
s=parseInt(rtime-h*3600-m*60);
if(s<10)
s="0"+s
//window.status="Time Remaining :  "+m+":"+s//Affichage dans la barre
window.setTimeout("checktime()",1000)
document.getElementById("comptarebour").innerHTML="<center><b>Prochain Tour Dans:</b><br>  "+h+"<b>h </b>"+m+"<b>mn </b>"+s+"<b>s</b></center>";
}

function settimes()
{
var time= new Date();
hours= time.getHours();
mins= time.getMinutes();
secs= time.getSeconds();
etime=hours*3600+mins*60+secs;
etime+=<? echo $timestamp; ?>;
checktime();
}

function checktime()
{
var time= new Date();
hours= time.getHours();
mins= time.getMinutes();
secs= time.getSeconds();
ctime=hours*3600+mins*60+secs

if(ctime>=etime){
expired();
}
else display();
}

function expired(){
location.href="menu.php";  //Ici se place le lien vers la page qui sera chargé apres le compte à rebours
}
</script>

<BODY onLoad="settimes()">



<div id="comptarebour"></div> // Affichage du compteur dans le corps de la page


--------------------
Webmaster du Action-RPG Heroes' Chronicles & du Site dont VOUS êtes le héros VORTEX
user posted image
PMEmail Poster
Top
Vorgat
Ecrit le : Samedi 22 Octobre 2005 à 14h16
Quote Post


Pro
*

Groupe : Membre
Messages : 177


Oui, je sais. Mais j'essaye de ne pas plagier ogame. Mais beaucoup diront que mon site y ressemble car il y a la fonction de recherche. Enfin.

Merci pour ton code. Je le testerais demain où quand je pourrais programmer.

EDIT : Je l'appelle comment la fonction ? Sachant que je stocke mon timestamp dans une bdd ?
PMEmail PosterUsers Website
Top
CerberusXt
Ecrit le : Samedi 22 Octobre 2005 à 14h19
Quote Post


Pro
*

Groupe : Membre
Messages : 135


Dans la fonction SETTIME du javascript il y a un: <? echo $timestamp; ?> qui correspond au temps en seconde du decompte.
Donc tu recuperes le temps que tu veux decrementer comme tu veux depuis ta base de données (ex: temps de derniere connexion du joueur, ou temps d'attaque) et tu le place à cet endroit.


--------------------
Webmaster du Action-RPG Heroes' Chronicles & du Site dont VOUS êtes le héros VORTEX
user posted image
PMEmail Poster
Top
Vorgat
Ecrit le : Samedi 22 Octobre 2005 à 14h25
Quote Post


Pro
*

Groupe : Membre
Messages : 177


On peut donc mettre du php dans du javascript.

Merci beaucoup.
PMEmail PosterUsers Website
Top
CerberusXt
Ecrit le : Samedi 22 Octobre 2005 à 14h26
Quote Post


Pro
*

Groupe : Membre
Messages : 135


Oui, au même titre que l'on met du php dans du html, c'est ca qui est beau ^^


--------------------
Webmaster du Action-RPG Heroes' Chronicles & du Site dont VOUS êtes le héros VORTEX
user posted image
PMEmail Poster
Top
Vorgat
Ecrit le : Samedi 22 Octobre 2005 à 14h28
Quote Post


Pro
*

Groupe : Membre
Messages : 177


Donc, je pourrait faire des requètes afin de prendre le timestamp.
PMEmail PosterUsers Website
Top
CerberusXt
Ecrit le : Samedi 22 Octobre 2005 à 14h30
Quote Post


Pro
*

Groupe : Membre
Messages : 135


Oui, tu fais ta requete juste avant le Javascript, tu récuperes la durée que tu veux et ensuite tu la place dans le javascript qui suit ta requête.


--------------------
Webmaster du Action-RPG Heroes' Chronicles & du Site dont VOUS êtes le héros VORTEX
user posted image
PMEmail Poster
Top
Vorgat
Ecrit le : Samedi 22 Octobre 2005 à 14h34
Quote Post


Pro
*

Groupe : Membre
Messages : 177


Oui, mais j'aimerais faire plusieurs décompte. Il faut donc que je fasse ma requète dans le javascript , non ?
PMEmail PosterUsers Website
Top
CerberusXt
Ecrit le : Samedi 22 Octobre 2005 à 14h36
Quote Post


Pro
*

Groupe : Membre
Messages : 135


Pour faire plusieurs decompte il faut repeter le script (enfin je n'ai pas vraiment essayer de mettre plusieurs decompte) avec a chaque fois un temps different.
Je ne crois pas qu'il est possible de faire plusieurs décompte dans le même code


--------------------
Webmaster du Action-RPG Heroes' Chronicles & du Site dont VOUS êtes le héros VORTEX
user posted image
PMEmail Poster
Top
Vorgat
Ecrit le : Samedi 22 Octobre 2005 à 14h38
Quote Post


Pro
*

Groupe : Membre
Messages : 177


Comment puis-je faire pour mettre une conditions du style

if (fonction_javascript existe déja)
{
non, vous ne pouvez rien faire
}

PMEmail PosterUsers Website
Top
Vorgat
Ecrit le : Lundi 24 Octobre 2005 à 12h36
Quote Post


Pro
*

Groupe : Membre
Messages : 177


Bonjour, j'ai pas vraiment bien compris comment on faisais appelle à la fonction.

Voici un bout de code :

CODE
if (isset ($_GET['ok']) AND $_GET['ok'] == 'organes')
   {
   $time = time();
   mysql_query("UPDATE recherche_t SET organes='$time'");
   }
   elseif (is_numeric($rett->organes))
   {
   $timestamp = $rett->organes;
   ?>
   <p onLoad="settimes()"></p>
   <?php
   }
   elseif ($rett->organes == 'oui')
   {
   ?>
     <td background="images/tableau_08.gif" width="469" height="200"><p style="padding:10px; text-indent:20px;"><img src="org.jpg" width="100" height="100" style="float:left; padding:15px;"> Vous connaissez déja le systeme de trafic d'Organe.</p></td>
   <?php
   }
   elseif ($res->reputation >= 7 AND $res->argent >= 60000 AND $res->medecins >= 4)
   {
   ?>
        <td background="images/tableau_08.gif" width="469" height="200"><p style="padding:10px; text-indent:20px;"><img src="org.jpg" width="100" height="100" style="float:left; padding:15px;">Apprendre le système de trafic d'Organes<br><br><br><a href="recherche_t.php?ok=organes">Recherche Trafic d'Organes</a></p></td>
      <?php
   }
   elseif ($res->reputation < 7 AND $res->argent < 60000 AND $res->medecins < 4)
   {
   ?>
     <td background="images/tableau_08.gif" width="469" height="200"><p style="padding:10px; text-indent:20px;"><img src="org.jpg" width="100" height="100" style="float:left; padding:15px;"> Vous ne pouvez apprendre le systeme de trafic d'Organe.</p></td>
   <?php
   }
   ?>


J'explique vite fait ce que j'aimerais faire. Le joueur clique sur un lien, permettant la recherche d'organs. Il retourne sur la même page, et le décompte commence. Le décompte est de 3 heures.

Cordialement,
Vorgat
PMEmail PosterUsers Website
Top
Vorgat
Ecrit le : Mercredi 26 Octobre 2005 à 10h39
Quote Post


Pro
*

Groupe : Membre
Messages : 177


Comment puis-je faire apparaître le compte à rebours ?

j'ai fait un <p id="comptarebours"></p>, mais cela ne marche point.

Cordialement,
Vorgat
PMEmail PosterUsers Website
Top
CerberusXt
Ecrit le : Mercredi 26 Octobre 2005 à 14h06
Quote Post


Pro
*

Groupe : Membre
Messages : 135


Normal, tu appeles la fonction avant d'avoir défini le temps que devait durer son compte à rebours en en-tête:

CODE
function settimes()
{
var time= new Date();
hours= time.getHours();
mins= time.getMinutes();
secs= time.getSeconds();
etime=hours*3600+mins*60+secs;
etime+=<? echo $timestamp; ?>;
checktime();
}


Il faut remplacer le etime+=<? echo $timestamp; ?>; par ton propre timestamp avant d'appeler la fonction d'affichage du décompte (sinon il démarre de 0 et affiche ce qu'il y a entre les balises <p></p> dans ton cas rien)

Si tu veux afficher quelques chose à 0 fais: <p id="comptarebours">TEXTE A AFFICHER SI TIMESTAMP = 0 </p>


Il faut définir ta fonction avant de l'utiliser et non l'inverse


--------------------
Webmaster du Action-RPG Heroes' Chronicles & du Site dont VOUS êtes le héros VORTEX
user posted image
PMEmail Poster
Top
« Sujets + anciens | Programmer | Sujets + récents »

Reply to this topicStart new topicStart Poll