JeuWeb - Crée ton jeu par navigateur
[Résolu][Javascript] Comment faire un décompte du temps de construction ? - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Résolu][Javascript] Comment faire un décompte du temps de construction ? (/showthread.php?tid=5947)

Pages : 1 2 3


RE: [Javascript] Comment faire un décompte du temps de construction ? - Sephi-Chan - 31-01-2012

C'est pour ça que je t'avais guidé en mettant un gros commentaire ! Et c'est du Javascript, pas du jQuery. :p

Et pense à mettre le code Javascript dans un fichier externe et inclure le fichier. Comme ça les navigateurs de tes utilisateurs garderont le fichier en cache et n'auront pas à télécharger ce code à chaque visite.

Bon, en tout cas, j'espère que ça t'aura donné une idée de la façon dont on peut utiliser Javascript sur une jolie couche de HTML. Ça évite de mélanger les torchons et les serviettes ! Smile


RE: [Javascript] Comment faire un décompte du temps de construction ? - keke - 01-02-2012

(31-01-2012, 08:42 PM)InboX a écrit : cochonne :p

Ca reste un forum sérieux ici ^^. Les propositions et les étalages publiques ne sont pas tolérés !

kéké le modérateur ...


RE: [Javascript] Comment faire un décompte du temps de construction ? - InboX - 01-02-2012

un peu d'humour ne fait pas de mal forum sérieux ou pas :p

Cordialement,


RE: [Javascript] Comment faire un décompte du temps de construction ? - Akira777 - 02-02-2012

Tiens je te passe un vieux code que j'avais fait il y a quelques temps déjà, ça pourra peut-être t'aider...


var cible = new Date('".$date."');
var time = parseInt(cible.getTime() / 1000, 10);

function decompte()
{
var aujourdhui = new Date();
time_tmp = parseInt(aujourdhui.getTime() / 1000, 10);
restant = time - time_tmp;

jour = parseInt((restant / (60 * 60 * 24)), 10);
heure = parseInt((restant / (60 * 60) - jour * 24), 10);
minute = parseInt((restant / 60 - jour * 24 * 60 - heure * 60), 10);
seconde = parseInt((restant - jour * 24 * 60 * 60 - heure * 60 * 60 - minute * 60), 10);

if (jour > 1)
{
document.getElementById('jours').innerHTML = jour+' jours';
}
else if (jour == 0)
{
document.getElementById('jours').innerHTML = '';
}
else
{
document.getElementById('jours').innerHTML = jour+' jour';
}
if (heure > 1)
{
document.getElementById('heures').innerHTML = heure+' heures';
}
else if (heure == 0)
{
document.getElementById('heures').innerHTML = '';
}
else
{
document.getElementById('heures').innerHTML = heure+' heure';
}
if (minute > 1)
{
document.getElementById('minutes').innerHTML = minute+' minutes';
}
else if (minute == 0)
{
document.getElementById('minutes').innerHTML = '';
}
else
{
document.getElementById('minutes').innerHTML = minute+' minute';
}
if (seconde > 1)
{
document.getElementById('secondes').innerHTML = seconde+' secondes';
}
else
{
document.getElementById('secondes').innerHTML = seconde+' seconde';
}

if (time_tmp < time)
{
setTimeout('decompte()', 1000);
}

else
{
window.location.replace("".$redirection."");
}
}

setTimeout('decompte()', 500);

Faut mettre ça dans une fonction PHP que tu appelles comme tu veux, tu lui passes en argument $date, qui correpond à un date() PHP au format "F d, Y H:iConfused", et en second parametre $redirection, qui correspond à là où tu veux rediriger à la fin du compte à rebours.

Enfin, c'est un exemple...

Je te montre également mon code PHP au cas où y'aurait mal-compréhension.


/*
* Fonction PHP incluant le code Javascript du compte à rebours
* param $date_rebour (int) timestamp
* param $redirection (string) adresse url
* return ressource (string) code javascript
*/
public static function decompte($date_rebour, $redirection)
{
$date = date('F d, Y H:iConfused', $date_rebour);

echo "<script type=\"text/javascript\">
var cible = new Date('".$date."');
var time = parseInt(cible.getTime() / 1000, 10);

function decompte()
{
var aujourdhui = new Date();
time_tmp = parseInt(aujourdhui.getTime() / 1000, 10);
restant = time - time_tmp;

jour = parseInt((restant / (60 * 60 * 24)), 10);
heure = parseInt((restant / (60 * 60) - jour * 24), 10);
minute = parseInt((restant / 60 - jour * 24 * 60 - heure * 60), 10);
seconde = parseInt((restant - jour * 24 * 60 * 60 - heure * 60 * 60 - minute * 60), 10);

if (jour > 1)
{
document.getElementById('jours').innerHTML = jour+' jours';
}
else if (jour == 0)
{
document.getElementById('jours').innerHTML = '';
}
else
{
document.getElementById('jours').innerHTML = jour+' jour';
}
if (heure > 1)
{
document.getElementById('heures').innerHTML = heure+' heures';
}
else if (heure == 0)
{
document.getElementById('heures').innerHTML = '';
}
else
{
document.getElementById('heures').innerHTML = heure+' heure';
}
if (minute > 1)
{
document.getElementById('minutes').innerHTML = minute+' minutes';
}
else if (minute == 0)
{
document.getElementById('minutes').innerHTML = '';
}
else
{
document.getElementById('minutes').innerHTML = minute+' minute';
}
if (seconde > 1)
{
document.getElementById('secondes').innerHTML = seconde+' secondes';
}
else
{
document.getElementById('secondes').innerHTML = seconde+' seconde';
}

if (time_tmp < time)
{
setTimeout('decompte()', 1000);
}

else
{
window.location.replace(\"".$redirection."\");
}
}

setTimeout('decompte()', 500);
</script>";
}

Ah, et j'ai failli oublier l'intégration HTML, te faut des div avec les id : jour, heure, minute, seconde

Si tu veux pas les jours, tu mets pas de div portant l'id jour, ...

A bientôt !


RE: [Javascript] Comment faire un décompte du temps de construction ? - Sephi-Chan - 02-02-2012

Tu devrais jetter un œil au code que je lui ai proposé. Ça peut t'intéresser. Wink
C'est bien plus simple et propre.


RE: [Javascript] Comment faire un décompte du temps de construction ? - InboX - 02-02-2012

(02-02-2012, 10:05 AM)Sephi-Chan a écrit : Tu devrais jetter un œil au code que je lui ai proposé. Ça peut t'intéresser. Wink

Un très bon script fonctionne super bien Smile
mise a part le décalage de l'heure de fin mais bon sinon Impeccable Smile

Cordialement,



RE: [Javascript] Comment faire un décompte du temps de construction ? - Maks - 02-02-2012

Code :
setTimeout('decompte()', 500);

eval is evil :'(


RE: [Javascript] Comment faire un décompte du temps de construction ? - Akira777 - 06-02-2012

Je plussoie, merci pour la ressource Sephi-chan !


RE: [Javascript] Comment faire un décompte du temps de construction ? - Sephi-Chan - 06-02-2012

Il vous en prie. On est sur JeuWeb pour ça. :p


RE: [Javascript] Comment faire un décompte du temps de construction ? - Angelblade - 06-02-2012

Surtout que
Code :
setTimeout('decompte()', 500);

et

Code :
setTimeout(decompte, 500);

feront la même chose. Les setTimeout avec une chaîne de caractères c'est nul.