IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Compte à rebours auto restart


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 26
    Points : 16
    Points
    16
    Par défaut Compte à rebours auto restart
    Bonjour,

    Voilà j'ai désespérément cherché à trouver un script de compte à rebours bien précis:

    1. J'ai besoin que le point de départ un jour de la semaine 'a une heure précise (par exemple le vendredi à minuit)
    2. Le compte à rebours doit se relancer automatiquement dès que le décompte est terminé (ainsi chaque vendredi à minuit un compte à rebours est lancé qui se termine le 15 jours plus tard (le vendredi à minuit) et qui relance automatiqement un nouveau décompte sur 15 jours.
    3. NE pas avoir besoin de toucher au script une fois mis en place ( d'où le restart auto)

    Voilà ce que j'ai trouvé pour le moment:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    function setcountdown(theyear,themonth,theday,thehour,themin,thesec){
    yr=theyear;mo=themonth;da=theday;hr=thehour;min=themin;sec=thesec
    }
     
    hour(0=midnight,23=11pm), minutes, seconds:
    setcountdown(2006,06,04,20,00,00)
     
    var occasion="."
    var message_on_occasion="Thankyou this auction has finished"
     
    var countdownwidth='318px'
    var countdownheight='90px'
    var countdownbgcolor='lightyellow'
    var opentags='<font face="Verdana"><large>'
    var closetags='</large></font>'
     
    var montharray=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")
    var crosscount=''
     
    function start_countdown(){
    if (document.layers)
    document.countdownnsmain.visibility="show"
    else if (document.all||document.getElementById)
    crosscount=document.getElementById&&!document.all?document.getElementById("countdownie") : countdownie
    countdown()
    }
     
    if (document.all||document.getElementById)
    document.write('<span id="countdownie" style="width:'+countdownwidth+'; background-color:'+countdownbgcolor+'"></span>')
     
    window.onload=start_countdown
     
     
    function countdown(){
    var today=new Date()
    var todayy=today.getYear()
    if (todayy < 1000)
    todayy+=1900
    var todaym=today.getMonth()
    var todayd=today.getDate()
    var todayh=today.getHours()
    var todaymin=today.getMinutes()
    var todaysec=today.getSeconds()
    var todaystring=montharray[todaym]+" "+todayd+", "+todayy+" "+todayh+":"+todaymin+":"+todaysec
    futurestring=montharray[mo-1]+" "+da+", "+yr+" "+hr+":"+min+":"+sec
    dd=Date.parse(futurestring)-Date.parse(todaystring)
    dday=Math.floor(dd/(60*60*1000*24)*1)
    dhour=Math.floor((dd%(60*60*1000*24))/(60*60*1000)*1)
    dmin=Math.floor(((dd%(60*60*1000*24))%(60*60*1000))/(60*1000)*1)
    dsec=Math.floor((((dd%(60*60*1000*24))%(60*60*1000))%(60*1000))/1000*1)
    //if on day of occasion
    if(dday<=0&&dhour<=0&&dmin<=0&&dsec<=1&&todayd==da){
    if (document.layers){
    document.countdownnsmain.document.countdownnssub.document.write(opentags+message_on_occasion+closeta gs)
    document.countdownnsmain.document.countdownnssub.document.close()
    }
    else if (document.all||document.getElementById)
    crosscount.innerHTML=opentags+message_on_occasion+closetags
    return
    }
    //if passed day of occasion
    else if (dday<=-1){
    if (document.layers){
    document.countdownnsmain.document.countdownnssub.document.write(opentags+"Occasion already passed! "+closetags)
    document.countdownnsmain.document.countdownnssub.document.close()
    }
    else if (document.all||document.getElementById)
    crosscount.innerHTML=opentags+"Occasion already passed! "+closetags
    return
    }
    //else, if not yet
    else{
    if (document.layers){
    document.countdownnsmain.document.countdownnssub.document.write(opentags+dday+ " days, "+dhour+" hrs, "+dmin+" mins., and "+dsec+" secs"+occasion+closetags)
    document.countdownnsmain.document.countdownnssub.document.close()
    }
    else if (document.all||document.getElementById)
    crosscount.innerHTML=opentags+dday+ " days, "+dhour+" hrs, "+dmin+" mins, and "+dsec+" secs"+occasion+closetags
    }
    setTimeout("countdown()",1000)
    }
    Code html :
    <ilayer id="countdownnsmain" width=&{countdownwidth}; height=&{countdownheight}; bgColor=&{countdownbgcolor}; visibility=hide><layer id="countdownnssub" width=&{countdownwidth}; height=&{countdownheight}; left=0 top=0></layer></ilayer>
    PROBLEMES:
    1. Le script est configuré sur une période de 7 jours et étant débutante en flash je n'arrive pas à identifier les données à modifier
    2. L'auto-restart n'est pas configuré et je ne sais pas du tout comment m'y prendre.

    Quelqu'un pourrait-il m'aider ou me donner des pistes pour arriver au résultat que je souhaite obtenir.

    Merci

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    commence peut être déja par récupérer un timestamp serveur

    là il suffit de moifier la date système

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 26
    Points : 16
    Points
    16
    Par défaut
    Merci pour ta reponse SpaceFrog.

    Le problème est que je suis débutant en javascript et je ne vois pas du tout comment faire ce que tu m'expliques lol.

    Pourrais tu être plus explicite?

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    il faut passer le timestamp de php à javascript c'est expliqué dans la FAQ me semble-t-il

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 26
    Points : 16
    Points
    16
    Par défaut
    Ok ok... Merci Spacefrog je vais approfondir mes recherches de ce côté alors

  6. #6
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 26
    Points : 16
    Points
    16
    Par défaut
    bon voilà j'ai finalement trouvé une solution. Je passe par un fichier xml pour gérer la date de départ de mon compte à rebours.

    Problème je crois que je n'arrive pas à récupérer correctement ma variable.
    Voilà mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    //On récuère date actuelle
    $date = date("M d H:i:s Y", time()+2*3600);
    $datefin = date("M d H:i:s Y", time()+338*3600);
    //On défini fichier XML dans lequel on souhaite écrire
    $fichierXML = 'xmldate/date.xml';
    ?>
    <? 
    //On vérifie la taille du fichier xml
    $octet=filesize("xmldate/date.xml"); 
    //si il est vide
    if ($octet==0) 
    { 
    	//On récupère la date actuelle
    	$dynamic_content = "<?xml version='1.0' encoding='UTF-8' standalone='no' ?>
    			<date>".$date."</date>
    			<datefin>".$datefin."</datefin>"; 
     
    	//On ouvre le fichier en mode écriture
    	$openfichier = fopen($fichierXML,"w"); 
     
    	//Entête du fichier XML
    	fwrite($openfichier,"");
     
    	//Balise d'ouverture 
    	fwrite($openfichier,""); 
     
    	//On remplit le fichier avec le résultat retourné par la fonction
    	fwrite($openfichier,$dynamic_content); 
     
    	//Balise de fermeture
    	fwrite($openfichier,""); 
     
    	//On ferme le fichier
    	fclose($openfichier); 
     
    } 
    //si le fichier xml n'est pas vide
    else if ($octet!=0) 
    { 
      $dom = new DomDocument;
      $dom->load("xmldate/date.xml");
     
      $debut = $dom->getElementsByTagName('debut')->item(0);
      $listedebut = $debut->getElementsByTagName('date');
      foreach($listedebut as $date)
      $date1 = $date->firstChild->nodeValue . "<br />";
     
      $fin = $dom->getElementsByTagName('fin')->item(0);
      $listefin = $fin->getElementsByTagName('date');
      foreach($listefin as $date)
      $date2 = $date->firstChild->nodeValue . "<br />";
     
    }
    ?> 
     
    <?php echo $date1; ?>
    <?php echo $date2; ?>
     
    <label id="Compte1"></label><br />
    <label id="Compte2"></label><br />
    <label id="Compte3"></label><br />
    <label id="Compte4"></label><br />
     
     
     
    <script type="text/JavaScript">
     
     
    var datedebut = "<?php echo $date1; ?>" ; // Date fin inscription (et début votes) 
    document.write(datedebut);
     
    </script>
     
    <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("Votes"));
     
    </script>
    Si j'écris le code de cette façon Le script me renvois "votes ternimés"... alors que les dates sont:
    $date1:May 08 19:15:45 2010
    $date2:May 17 19:15:45 2010

    Si j'essaye en faisant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var datedebut = "<?php echo $date1; ?>" ; // Date fin inscription (et début votes) 
    var datefin = "<?php echo $date2; ?>" ; // Date fin votes
    et en replaçant du coups:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Rebour("Compte1", "<?php echo $date1; ?>" , "<?php echo $date2; ?>" , escape("Votes"));
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Rebour("Compte1", + $date1 + , + $date2 + , escape("Votes"));
     
    </script>
    Rien ne s'affiche du tout.

    J'ai également testé le contenu de mes variables en faisant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <script type="text/JavaScript">
     
     
    var datedebut = "<?php echo $date1; ?>" ; // Date fin inscription (et début votes) 
    document.write(datedebut);
     
    var datefin = "<?php echo $date2; ?>" ; // Date fin inscription (et début votes) 
    document.write(datefin);
    </script>
    et la mes dates s'affichent correctement.

    Quelqu'un à une idée de comment m'y prendre??

  7. #7
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 26
    Points : 16
    Points
    16
    Par défaut
    erreur identifiée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      $date1 = $date->firstChild->nodeValue . "<br />";
      $date2 = $date->firstChild->nodeValue . "<br />";
    il fallait écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      $date1 = $date->firstChild->nodeValue;
      $date2 = $date->firstChild->nodeValue ";
    merci à tous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Compte à rebours
    Par Anduriel dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 29/12/2005, 20h12
  2. compte à rebours
    Par Datord dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 17/11/2005, 21h22
  3. compte à rebours
    Par etoile1506 dans le forum C
    Réponses: 10
    Dernier message: 27/10/2005, 15h20
  4. Compte à rebours trop rapide
    Par Anduriel dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/06/2005, 20h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo