COMPTE À REBOURS POUR ÉVÉNEMENT

lakichemole Messages postés 253 Date d'inscription vendredi 13 juin 2003 Statut Membre Dernière intervention 18 mai 2009 - 13 mai 2008 à 10:29
seblechinois Messages postés 72 Date d'inscription mercredi 27 décembre 2000 Statut Membre Dernière intervention 16 mai 2016 - 15 mai 2010 à 11:14
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/46618-compte-a-rebours-pour-evenement

seblechinois Messages postés 72 Date d'inscription mercredi 27 décembre 2000 Statut Membre Dernière intervention 16 mai 2016 1
15 mai 2010 à 11:14
Re,
J'ai corrigé le problème :
var date2 = new Date (2010,4,22,14,30,00);
ça marche avec IE, FF et google chrome

/!\ Pour le mois 0=janvier; 1=février
seblechinois Messages postés 72 Date d'inscription mercredi 27 décembre 2000 Statut Membre Dernière intervention 16 mai 2016 1
15 mai 2010 à 11:01
Bonjour,
merci pour cette source! ça marche nickel sauf sous google chrome...
var sec = NaN ???
a voir!
CSIBern Messages postés 44 Date d'inscription dimanche 3 décembre 2000 Statut Membre Dernière intervention 21 mai 2014
5 mai 2010 à 00:43
Salut nattydreadlocks,

J'ai voulu t'aider dans ton problème en créant un code à partir du début. Cependant, vers la fin, je me suis rendu compte que j'avais peut-être mal compris ta question.

Le nouveau code, tu pourras le trouver ici : http://www.javascriptfr.com/codes/COMPTE-REBOURS-EVENEMENTS-REPETITION_51728.aspx.

Dis-moi s'il t'est quand même utile.

Bon courage
nattydreadlocks Messages postés 3 Date d'inscription lundi 16 mars 2009 Statut Membre Dernière intervention 3 mai 2010
3 mai 2010 à 18:51
salut salut bon j'ai trouvé une solution pour utiliser ton script. le problème c'est que j'ai besoin de récupérer un variable que j'ai défini en phpdonc voilà ce que j'ai tenté

<script type="text/JavaScript">
window.status="";
function Rebour(LabelId,DateEvenement,DateFinEvenement,Text) {
var Affiche=document.getElementById(LabelId);
var date1 = new Date();
var date2 = new Date (DateEvenement); // Date et heure de l'événement
var date3 = new Date (DateFinEvenement); // Date et heure de la fin de l'événement
var sec = (date2 - date1) / 1000; // Temps donné en millièmes de seconde
var TempsRestant=(date3-date1);
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 = unescape(Text) + " temps restant : " + j +" jours, "+ h +" h "+ mn +" min et "+ sec + " sec ";
//window.status = unescape(Text) + " temps restant : " + j +" jours, "+ h +" h "+ mn +" min et "+ sec + " sec ";
}
else if (Math.abs(sec) < TempsRestant ) { // Durée de l'événement
Affiche.innerHTML = unescape(Text) + " en cours";
//window.status += unescape(Text) + " en cours";
}
else {
Affiche.innerHTML = unescape(Text) + " terminé";
//window.status += unescape(Text) + " terminé";
}

tRebour=setTimeout ("Rebour('" + LabelId + "','" + DateEvenement + "','" + DateFinEvenement + "','" + Text + "');", 1000);
}
Rebour("Compte1", "<?php echo $date1; ?>" , "<?php echo $date2; ?>" , escape("Diffusion aux USA, Grey's Anatomy, Saison 5, Premier Episode"));

</script>

(ici on m'affiche que le'évènement est terminé hors j'ai etabli la date de depart au 8/05/2010)

J'ai également essayé de les insérer de la sorte:

var datedebut = "<?php echo $date1; ?>" ; // Date fin inscription (et début votes)
var datefin = "<?php echo $date2; ?>" ; // Date fin votes

Rebour("Compte1", + datedebut + , + datefin + , escape("Diffusion aux USA, Grey's Anatomy, Saison 5, Premier Episode"))

Mais là plus rien ne s'affiche

Je supose qu'il s'agit d'une erreur de syntaxe mais je ne vois pas comment faire.

(pr info les dates sont
May 08 19:15:45 2010 et May 17 19:15:45 2010)
nattydreadlocks Messages postés 3 Date d'inscription lundi 16 mars 2009 Statut Membre Dernière intervention 3 mai 2010
2 mai 2010 à 19:57
ok je comprend... Le truc c'est que je n'y connais pas grand chose et je ne trouve pas de tutoriel ou ressource adaptée à ce que je cherche. Saurais-tu me donner une piste?
CSIBern Messages postés 44 Date d'inscription dimanche 3 décembre 2000 Statut Membre Dernière intervention 21 mai 2014
2 mai 2010 à 19:44
Salut,

Désolé, mais il ne sera pas possible d'adapter ce programme à ce que tu veux, il faudrait en réécrire tout un nouveau. Je n'aurai pas le temps de le faire, il faudra donc que tu t'y attèles seul. Tu pourras quand même t'inspirer du présent programme pour rédiger le nouveau.

Bonne chance et redis-moi si t'as besoin d'un coup de main
nattydreadlocks Messages postés 3 Date d'inscription lundi 16 mars 2009 Statut Membre Dernière intervention 3 mai 2010
2 mai 2010 à 19:25
Bonjour,

Voilà je souhaite désespérément une solution au probleme suivant:

Je cherche un compte à rebours, comme le tiens mais qui fonctionnerait sur une duréé (et non pas sur une date future).

Je m'explique:

J'ai besoin que le compte à rebours commence le vendredi à minuit et s'arrête 15 jours plus tard (vendredi à minuit) pour recommencer à nouveau un cicle de 15 jours, .. et ainsi de suite...

Pourrais tu m'aider?
CSIBern Messages postés 44 Date d'inscription dimanche 3 décembre 2000 Statut Membre Dernière intervention 21 mai 2014
12 avril 2010 à 09:32
Pas de soucis, ravis d'avoir pu aider.
Beuze14 Messages postés 14 Date d'inscription jeudi 8 avril 2010 Statut Membre Dernière intervention 19 novembre 2010
12 avril 2010 à 08:50
Merci CSIBern, ça marche nikel. Encore merci pour ton aide.
CSIBern Messages postés 44 Date d'inscription dimanche 3 décembre 2000 Statut Membre Dernière intervention 21 mai 2014
9 avril 2010 à 13:41
J'ai juste oublié de mettre un return dans la fonction. Ca donnerait donc :

function ajoute_zero (nombre) {
if (nombre < 10) {
nombre = "0" + nombre;
}
return nombre;
}

ainsi tu pourras utiliser la fonction comme suit :
Dans la fonction rebour remplacer : Temps restant : " + j + ...
par Temps restant : " + ajoute_zero (j) +

J'espère que je n'ai pas fait d'erreur, ça fait longtemps que je n'ai plus programmé en javascript, mais l'idée est que la fonction retourne un nombre + "0" si il est inférieur à 10 et le nombre entré dans le cas contraire. La fonction remplace donc le nombre
Beuze14 Messages postés 14 Date d'inscription jeudi 8 avril 2010 Statut Membre Dernière intervention 19 novembre 2010
9 avril 2010 à 11:31
Alors je comprends bien l'utilité de cette fonction mais comment faire reconnaître que "nombre" est égal aux valeurs "j", "h", "mn" et "sec" sachant qu'il faille définir j<0, h<0, mn<0 et sec<0.

Je débute en programmation et j'imagine bien "dans ma tête" ce que cela doit donner mais le programmer là, "je nage" ;)
CSIBern Messages postés 44 Date d'inscription dimanche 3 décembre 2000 Statut Membre Dernière intervention 21 mai 2014
9 avril 2010 à 11:07
Salut Beuze14,

La gestion des nombres ne permet pas d'avoir un zéro avant les chiffres. Pour cela, tu dois transformer tes nombres en charactères. tu pourrais faire une fonction du style :

function ajoute_zero (nombre) {
if (nombre < 10) {
nombre = "0" + nombre;
}
}

Je n'ai pas vérifié cette fonciton, mais il te faudra peut-être juste une fonction transformant ton nombre en string (mais à priori ça ne devrait pas poser de problème).

Bonne programmation
Beuze14 Messages postés 14 Date d'inscription jeudi 8 avril 2010 Statut Membre Dernière intervention 19 novembre 2010
9 avril 2010 à 10:33
Salut,
je reviens sur ce sujet parce que je n'arrive pas à trouver une solution à mon problème.

j'aimerais savoir comment faire pour faire afficher un "0" lorsque les heures, jours, minutes et secondes sont inférieures à 10 (ex: 08 jours 09 h 05 min et 04 sec). Lorsque les chiffres passent en dessous de 10 tout se décale et du coup ça perturbe ma mise en page.
Je ne suis pas très fort en code javascript. J'ai essayé quelques truc mais sans succès. Quelqu'un peut-il me trouver une solution ?
Merci de votre aide.
Dav_c Messages postés 194 Date d'inscription dimanche 25 janvier 2004 Statut Membre Dernière intervention 11 décembre 2015
20 déc. 2009 à 17:00
vendu ;)
JulienB76 Messages postés 2 Date d'inscription mardi 5 juillet 2005 Statut Membre Dernière intervention 3 septembre 2009
3 sept. 2009 à 08:26
Ce script fonctionne t-il sous internet explorer 7 ? Je n'ai rien qui s'affiche contrairement à firefox. Merci en tous cas !
lakichemole Messages postés 253 Date d'inscription vendredi 13 juin 2003 Statut Membre Dernière intervention 18 mai 2009
20 avril 2009 à 11:49
Si c'est pas mal met une note :)
gegeloire42 Messages postés 1 Date d'inscription lundi 20 avril 2009 Statut Membre Dernière intervention 20 avril 2009
20 avril 2009 à 11:30
Pas mal....
lakichemole Messages postés 253 Date d'inscription vendredi 13 juin 2003 Statut Membre Dernière intervention 18 mai 2009
23 juil. 2008 à 16:14
A oui et pour le "" ça marche pour le premier appel mais pas dans l'appel du setTimeOut
Sat119 Messages postés 18 Date d'inscription mardi 22 juillet 2008 Statut Membre Dernière intervention 12 décembre 2013
23 juil. 2008 à 16:14
géant merci je vais faire les modifs
lakichemole Messages postés 253 Date d'inscription vendredi 13 juin 2003 Statut Membre Dernière intervention 18 mai 2009
23 juil. 2008 à 16:06
Et hop encore une nouvelle version, dans celle ci le 2 ème paramètre passé correspond à la date de fin d'évènement :

<html>
<label id="Compte1"></label>

<label id="Compte2"></label>

<label id="Compte3"></label>

<label id="Compte4"></label>

<script type="text/JavaScript">
window.status="";
function Rebour(LabelId,DateEvenement,DateFinEvenement,Text) {
var Affiche=document.getElementById(LabelId);
var date1 = new Date();
var date2 = new Date (DateEvenement); // Date et heure de l'événement
var date3 = new Date (DateFinEvenement); // Date et heure de la fin de l'événement
var sec = (date2 - date1) / 1000; // Temps donné en millièmes de seconde
var TempsRestant=(date3-date1);
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 = unescape(Text) + " temps restant : " + j +" jours, "+ h +" h "+ mn +" min et "+ sec + " sec ";
//window.status = unescape(Text) + " temps restant : " + j +" jours, "+ h +" h "+ mn +" min et "+ sec + " sec ";
}
else if (Math.abs(sec) < TempsRestant ) { // Durée de l'événement
Affiche.innerHTML = unescape(Text) + " en cours";
//window.status += unescape(Text) + " en cours";
}
else {
Affiche.innerHTML = unescape(Text) + " terminé";
//window.status += unescape(Text) + " terminé";
}

tRebour=setTimeout ("Rebour('" + LabelId + "','" + DateEvenement + "','" + DateFinEvenement + "','" + Text + "');", 1000);
}
Rebour("Compte1","Sep 26 03:00:00 2008","Sep 26 04:00:00 2008",escape("Diffusion aux USA, Grey's Anatomy, Saison 5, Premier Episode"));
Rebour("Compte2","Oct 02 03:00:00 2008","Oct 02 04:00:00 2008","Diffusion aux USA, Private Practice, Saison 2, Premier Episode");
Rebour("Compte3","Sep 26 03:00:00 2008","Sep 26 04:00:00 2008",escape("Diffusion en France, Grey's Anatomy, Saison 4, Premier Episode"));
Rebour("Compte4","Sep 26 03:00:00 2008","Sep 26 04:00:00 2008","Diffusion en France, Private Practice, Saison 1, Premier Episode");

</script>

</html>
CSIBern Messages postés 44 Date d'inscription dimanche 3 décembre 2000 Statut Membre Dernière intervention 21 mai 2014
23 juil. 2008 à 16:05
Ne t'en fais pas, ça viendra avec le temps, enfin j'espère. Pour moi, ce script était aussi mon premier (et le seul pour l'instant).

Pour la durée c'est correcte, mais tu peux aussi noté directement 3600 ;o).

Pour le \' je sais pas, lakichemole pourra certainement mieux te renseigner que moi, mais j'ai des doutes.

Je me pose quand même la question de pourquoi la réponse que j'avais donné avant ne fonctionne pas, j'avais oublié quelque chose (si ce n'est le escape, fonction que je ne connaissais pas) ?
Sat119 Messages postés 18 Date d'inscription mardi 22 juillet 2008 Statut Membre Dernière intervention 12 décembre 2013
23 juil. 2008 à 15:30
Okay c'est cool et donc au final comme les épisodes en France ne feront qu'une heure niveau durée de diffusion, je vais prendre le fuseau horaire de New York, donc 3h du mat' chez nous, avec une durée d'une heure aussi, ou peut être faire NYC et LA 3h et 6h,

mais donc pour afficher la durée d'une heure, et non de 3, c'est (1*60*60) c'est ça ?

et si on avait inscrit Grey\'s Anatomy, ça fonctionnait de la même façon qu'escape non ?

Merci en tout cas pour ta patience.. comme je l'ai dit, ça doit faire moins de deux semaines que ça me toque le Javascript
lakichemole Messages postés 253 Date d'inscription vendredi 13 juin 2003 Statut Membre Dernière intervention 18 mai 2009
23 juil. 2008 à 15:17
la commande escape est utile quand il y a des caractère spéciaux dans ta chaine de caractère ici tu avait une ' dans Grey's anatomy.
Donc à chaque fois que tu as des caractère spécieux dans ta chaine tu l'utilise :) (tu peux l'utiliser tout le temps ça mange pas de pain comme qui dirais)
Sat119 Messages postés 18 Date d'inscription mardi 22 juillet 2008 Statut Membre Dernière intervention 12 décembre 2013
23 juil. 2008 à 15:11
ça marche merci beaucoup, et dis moi, elle sert à quoi la commande escape ?
lakichemole Messages postés 253 Date d'inscription vendredi 13 juin 2003 Statut Membre Dernière intervention 18 mai 2009
23 juil. 2008 à 15:03
et voilà si avec ça t'y arrive pas je sais plus quoi faire :D (j'ai encore changer le code pour que se soit un peut plus simple):

<html>
<label id="Compte1"></label>

<label id="Compte2"></label>

<label id="Compte3"></label>

<label id="Compte4"></label>

<script type="text/JavaScript">
window.status="";
function Rebour(LabelId,DateEvenement,Text) {
var Affiche=document.getElementById(LabelId);
var date1 = new Date();
var date2 = new Date (DateEvenement); // 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 = unescape(Text) + " temps restant : " + j +" jours, "+ h +" h "+ mn +" min et "+ sec + " sec ";
//window.status = unescape(Text) + " temps restant : " + j +" jours, "+ h +" h "+ mn +" min et "+ sec + " sec ";
}
else if (Math.abs(sec) < (3 * n)) { // Durée de l'événement
Affiche.innerHTML = unescape(Text) + " en cours";
//window.status += unescape(Text) + " en cours";
}
else {
Affiche.innerHTML = unescape(Text) + " terminé";
//window.status += unescape(Text) + " terminé";
}

tRebour=setTimeout ("Rebour('" + LabelId + "','" + DateEvenement + "','" + Text + "');", 1000);
}
Rebour("Compte1","Sept 26 03:00:00 2008",escape("Diffusion aux USA, Grey's Anatomy, Saison 5, Premier Episode"));
Rebour("Compte2","Oct 02 03:00:00 2008","Diffusion aux USA, Private Practice, Saison 2, Premier Episode");
Rebour("Compte3","Sep 26 03:00:00 2008",escape("Diffusion en France, Grey's Anatomy, Saison 4, Premier Episode"));
Rebour("Compte4","Sep 26 03:00:00 2008","Diffusion en France, Private Practice, Saison 1, Premier Episode");

</script>

</html>
Sat119 Messages postés 18 Date d'inscription mardi 22 juillet 2008 Statut Membre Dernière intervention 12 décembre 2013
23 juil. 2008 à 14:53
pour les dernières lignes je ne sais pas encore, je les modifirais moi même c'est bon

pour la première Sept 26 03:00:00 2008
deuxième Oct 02 03:00:00 2008
lakichemole Messages postés 253 Date d'inscription vendredi 13 juin 2003 Statut Membre Dernière intervention 18 mai 2009
23 juil. 2008 à 14:45
et les dates ??
Sat119 Messages postés 18 Date d'inscription mardi 22 juillet 2008 Statut Membre Dernière intervention 12 décembre 2013
23 juil. 2008 à 14:03
il y en a 4

Diffusion aux USA, Grey's Anatomy, Saison 5, Premier Episode
Diffusion aux USA, Private Practice, Saison 2, Premier Episode
Diffusion en France, Grey's Anatomy, Saison 4, Premier Episode
Diffusion en France, Private Practice, Saison 1, Premier Episode

j'ai hâte de comprendre
lakichemole Messages postés 253 Date d'inscription vendredi 13 juin 2003 Statut Membre Dernière intervention 18 mai 2009
23 juil. 2008 à 13:51
ok je vais te prémarcher le travail en te donnant exactement se que tu doit coller donc pour le premier compte à rebours c'est bon pour le 2 eme 3eme tu veux quoi?
Sat119 Messages postés 18 Date d'inscription mardi 22 juillet 2008 Statut Membre Dernière intervention 12 décembre 2013
23 juil. 2008 à 13:33
et en modifiant le label id comme tu me le notes, l'affichage n'apparait pas non plus
Sat119 Messages postés 18 Date d'inscription mardi 22 juillet 2008 Statut Membre Dernière intervention 12 décembre 2013
23 juil. 2008 à 13:29
Le programme de lakichemolle donne un affichage tel que celui ci :

temps restant : temps qui défile
temps restant : temps qui défile
temps restant : temps qui défile

je voulais mettre à la place de temps restant première ligne, "Diffusion aux USA GREY'S ANATOMY, Saison 5 Episode 1"
sur la deuxième ligne, "Diffusion PP.. Saison 2.."

Car les comptes à rebour seront placés sur l'index directement.
En fait je cherche à définir à quoi se rapportent les comptes à rebour, d'où le long label id.

est-ce possible ?
lakichemole Messages postés 253 Date d'inscription vendredi 13 juin 2003 Statut Membre Dernière intervention 18 mai 2009
23 juil. 2008 à 09:12
Pas de problème :)
CSIBern Messages postés 44 Date d'inscription dimanche 3 décembre 2000 Statut Membre Dernière intervention 21 mai 2014
23 juil. 2008 à 07:26
Salut Sat119,

Ton erreur (en tout cas la première essentielle qui saute aux yeux) vient du fait que ton nom de label (label id) ne correspond pas au premier paramètre de la fonction que tu appelles à la fin (Rebour("Compte",... ).

Tu dois remplacer (par exemple) à la deuxième ligne (le texte que tu mets là ne sera pas affiché dans ta page, c'est juste le nom d'un cadre)
<label id="Diffusion aux USA, Grey's Anatomy, Saison 5, Premier Episode"></label>

par
<label id="S5E1"></label>

et presque à la fin
Rebour("Compte","Sep 26 03:00:00 2008","Grey's Anatomy, Premier Episode Saison 5 : l'épisode est en cours de diffusion","Grey's Anatomy, Saison 5, Premier Episode : L'épisode est terminé");
par
Rebour("S5E1","Sep 26 03:00:00 2008","Grey's Anatomy, Premier Episode Saison 5 : l'épisode est en cours de diffusion","Grey's Anatomy, Saison 5, Premier Episode : L'épisode est terminé");
Ainsi tu retrouves à ces 2 places le même nom pour le cadre, soit "S5E1".

Enfin, pour la durée, le "n" que j'introduis correspond au nombre de seconde dans un jour. Si tu veux que ça ne corresponde qu'à 3 heures, tu peux introduire à la place de 3*n 3*60*60, soit 10800, et tu devrais obtenir le bon résultat.

Enfin, je tiens à remercier lakichemole pour avoir transformé mon script en programme (ce qui te permet aujourd'hui de placer plusieurs comptes à rebours dans la même page) et pour les quelques corrections du départ.
Sat119 Messages postés 18 Date d'inscription mardi 22 juillet 2008 Statut Membre Dernière intervention 12 décembre 2013
23 juil. 2008 à 00:32
le truc c'est qu'il me semble que c'est cette partie qui défini l'affichage non ?

Affiche.innerHTML = "Temps restant : " + j +" jours, "+ h +" h "+ mn +" min et "+ sec + " sec ";
window.status = "Temps restant : " + j +" jours, "+ h +" h "+ mn +" min et "+ sec + " sec ";
}
else if (Math.abs(sec) < (3 * n)) { // Durée de l'événement
Affiche.innerHTML = TextEncours;
window.status += TextEncours;
}
else {
Affiche.innerHTML = TextTermine;
window.status += TextTermine;



et cette ligne :

else if (Math.abs(sec) < (3 * n)) { // Durée de l'événement

comment on fait pour que la durée de l'évènement soit de trois heures (à cause des fuseaux horaires, en tout ça fait trois heures..)
Sat119 Messages postés 18 Date d'inscription mardi 22 juillet 2008 Statut Membre Dernière intervention 12 décembre 2013
22 juil. 2008 à 23:00
je comprend pas.. j'ai tenté de faire des modifs .. en gros je veux annoncer sur le forum de Grey's Anatomy et Private Practice que j'administre, quand les premiers épisodes des nouvelles saisons vont être diffusés..

où est-ce que j'ai faux ? parce que sur ma page test, là où avec ton code il y avait au moins les comptes à rebours qui s'affichaient, là y a plus rien..

<html>
<label id="Diffusion aux USA, Grey's Anatomy, Saison 5, Premier Episode"></label>

<label id="Compte2"></label>

<label id="Compte3"></label>

<script type="text/JavaScript">
window.status="";
function Rebour(LabelId,DateEvenement,TextEncours,TextTermine) {
var Affiche=document.getElementById(LabelId);
var date1 = new Date();
var date2 = new Date (Sep 26 03:00:00 2008); // 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 = "Temps restant : " + j +" jours, "+ h +" h "+ mn +" min et "+ sec + " sec ";
window.status = "Temps restant : " + j +" jours, "+ h +" h "+ mn +" min et "+ sec + " sec ";
}
else if (Math.abs(sec) < (3 * n)) { // Durée de l'événement
Affiche.innerHTML = TextEncours;
window.status += TextEncours;
}
else {
Affiche.innerHTML = TextTermine;
window.status += TextTermine;
}

tRebour=setTimeout ("Rebour('" + LabelId + "','" + DateEvenement + "','" + TextEncours + "','" + TextTermine + "');", 1000);
}
Rebour("Compte","Sep 26 03:00:00 2008","Grey's Anatomy, Premier Episode Saison 5 : l'épisode est en cours de diffusion","Grey's Anatomy, Saison 5, Premier Episode : L'épisode est terminé");
Rebour("Compte2","Sep 4 10:00:00 2008","Compeur 2,temps restant : Le tournoi est en cours, venez profiter du spectacle","Temps restant : Le tournoi est terminé, retrouvez toutes les informations sur le site");
Rebour("Compte3","Jun 2 19:00:00 2009","Compeur 3,temps restant : Le tournoi est en cours, venez profiter du spectacle","Temps restant : Le tournoi est terminé, retrouvez toutes les informations sur le site");
</script>

</html>
lakichemole Messages postés 253 Date d'inscription vendredi 13 juin 2003 Statut Membre Dernière intervention 18 mai 2009
22 juil. 2008 à 15:31
Ok :)
Sat119 Messages postés 18 Date d'inscription mardi 22 juillet 2008 Statut Membre Dernière intervention 12 décembre 2013
22 juil. 2008 à 15:21
je verrais ça ce soir, il faut que j'aille au boulot là, merci en tout cas et je te tiens au courant
lakichemole Messages postés 253 Date d'inscription vendredi 13 juin 2003 Statut Membre Dernière intervention 18 mai 2009
22 juil. 2008 à 15:06
Je ne comprend pas se que tu veut changer; on est d'accord que mes 3 compte a rebours sont paramétrable de la facon suivante :
- Etape 1 : tu crée un objet HTML avec un id unique que tu insère n'importe ou dans ta page ex:<label id="MonComptePerso" ></label>

- Etape 2 : Entre les balises script et après la fonction Rebour() tu lance ton compte à rebour de la facon suivante Rebour(LabelId,DateEvenement,TextEncours,TextTermine); ex:
Rebour("MonComptePerso","Sep 4 10:00:00 2008","traitement en cours","traitement terminé")

Libre à toi d'ajouter/supprimer des compte à rebour et de personalisé leur création via les paramètres
Sat119 Messages postés 18 Date d'inscription mardi 22 juillet 2008 Statut Membre Dernière intervention 12 décembre 2013
22 juil. 2008 à 14:49
Alors oui effectivement, ça donne 3 comptes à rebour, mais tous liés au même intitulé évènements
lakichemole Messages postés 253 Date d'inscription vendredi 13 juin 2003 Statut Membre Dernière intervention 18 mai 2009
22 juil. 2008 à 14:16
Oui en fait le code que je viens de te donner test le (copie colle dans un fichier html et ouvre le fichier avec IE ).
Et dans ce code j'ai montrer un exemple avec 3 compte à rebours avec 3 date différentes etc :)
- Compte a rebours 1 (à associer à <label id="Compte"></label>:
Rebour("Compte","Sep 5 17:00:00 2008","Compeur 1,temps restant : Le tournoi est en cours, venez profiter du spectacle","Temps restant : Le tournoi est terminé, retrouvez toutes les informations sur le site");

- Compte a rebours 2 (à associer à <label id="Compte2"></label>:
Rebour("Compte2","Sep 4 10:00:00 2008","Compeur 2,temps restant : Le tournoi est en cours, venez profiter du spectacle","Temps restant : Le tournoi est terminé, retrouvez toutes les informations sur le site");

- Etc..
Sat119 Messages postés 18 Date d'inscription mardi 22 juillet 2008 Statut Membre Dernière intervention 12 décembre 2013
22 juil. 2008 à 12:50
Euh.. ok ? ^^

ça répond à une de mes questions ? parce que dans ce cas, je comprend pas la réponse.. :S

En gros, je voudrais établir 4 comptes à rebour. 4 dates différentes. Tous les évènements durant à peu près une heure et étant complètement indépendants les uns des autres.
lakichemole Messages postés 253 Date d'inscription vendredi 13 juin 2003 Statut Membre Dernière intervention 18 mai 2009
22 juil. 2008 à 12:18
Salut il n'est jamais trop tard pour s'y mettre :).
Ce code n'est en effet pas très générique je viens de le modifier pour qu'il le soit un peu plus, cependant la status bar n'est plus utilisable correctement):
<html>
<label id="Compte"></label>

<label id="Compte2"></label>

<label id="Compte3"></label>

<script type="text/JavaScript">
window.status="";
function Rebour(LabelId,DateEvenement,TextEncours,TextTermine) {
var Affiche=document.getElementById(LabelId);
var date1 = new Date();
var date2 = new Date (DateEvenement); // 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 = "Temps restant : " + j +" jours, "+ h +" h "+ mn +" min et "+ sec + " sec ";
window.status = "Temps restant : " + j +" jours, "+ h +" h "+ mn +" min et "+ sec + " sec ";
}
else if (Math.abs(sec) < (3 * n)) { // Durée de l'événement
Affiche.innerHTML = TextEncours;
window.status += TextEncours;
}
else {
Affiche.innerHTML = TextTermine;
window.status += TextTermine;
}

tRebour=setTimeout ("Rebour('" + LabelId + "','" + DateEvenement + "','" + TextEncours + "','" + TextTermine + "');", 1000);
}
Rebour("Compte","Sep 5 17:00:00 2008","Compeur 1,temps restant : Le tournoi est en cours, venez profiter du spectacle","Temps restant : Le tournoi est terminé, retrouvez toutes les informations sur le site");
Rebour("Compte2","Sep 4 10:00:00 2008","Compeur 2,temps restant : Le tournoi est en cours, venez profiter du spectacle","Temps restant : Le tournoi est terminé, retrouvez toutes les informations sur le site");
Rebour("Compte3","Jun 2 19:00:00 2009","Compeur 3,temps restant : Le tournoi est en cours, venez profiter du spectacle","Temps restant : Le tournoi est terminé, retrouvez toutes les informations sur le site");
</script>

</html>
Sat119 Messages postés 18 Date d'inscription mardi 22 juillet 2008 Statut Membre Dernière intervention 12 décembre 2013
22 juil. 2008 à 11:12
Salut ! Je suis une GRANDE débutante en HTML, genre le basique de chez basique.. mais je tente de me soigner ^^

J'ai deux questions..

La durée de ton évènement, le tournoi, c'est 3 jours, c'est ça ?

Si oui, comment tu exprimes une durée égale à 45 min, voire 1h ?

Et ensuite, est-ce qu'il y a un moyen d'intégrer plusieurs comptes à rebour, avec différents éléments ? parce que quand je le répète, le seul compte à rebour qui s'affiche est le dernier exprimé..

Merci :D
lakichemole Messages postés 253 Date d'inscription vendredi 13 juin 2003 Statut Membre Dernière intervention 18 mai 2009
14 mai 2008 à 09:35
pas de problème :)
CSIBern Messages postés 44 Date d'inscription dimanche 3 décembre 2000 Statut Membre Dernière intervention 21 mai 2014
13 mai 2008 à 18:55
Ah oui, c'est juste, je ne m'en étais même pas rendu compte, je te remercie et vais modifié ça de suite.
lakichemole Messages postés 253 Date d'inscription vendredi 13 juin 2003 Statut Membre Dernière intervention 18 mai 2009
13 mai 2008 à 17:46
Non mais ok mais tu écris ça :
mn = sec / 60;
h = mn /60;
j = Math.floor (sec / (24 * 3600));
h = Math.floor ((sec - (j * 24 * 3600)) / 3600);
mn = Math.floor ((sec - ((j * 24 * 3600 + h * 3600))) / 60);
On est d'accords que tu peux mettres les 2 première ligne en commentaire vu que tu ne t'en set part (pour tes calculs)?
CSIBern Messages postés 44 Date d'inscription dimanche 3 décembre 2000 Statut Membre Dernière intervention 21 mai 2014
13 mai 2008 à 16:59
En fait, la première fois je calcule le nombre de minutes (par exemple) totales restant jusqu'au moment m alors que la 2ème fois, c'est le nombre de minutes totales moins le nombre de minutes déjà comprises dans les heures et les jours. Le calcul pourrait bien évidemment être simplifié, mais pour des raisons personnelles de compréhension, j'ai préféré tout développer. A chacun sa méthode.

Merci de ton commentaire Lakichemole.
lakichemole Messages postés 253 Date d'inscription vendredi 13 juin 2003 Statut Membre Dernière intervention 18 mai 2009
13 mai 2008 à 10:29
Petite question pourquoi dans ton code tu calcul une premièere fois les minute et les heures "mn = sec / 60; h = mn /60;" si c'est pour les recalculer après ? C'était la première version? :)
Rejoignez-nous