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


Sujet :

JavaScript

  1. #1
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut Compte à rebours
    Salut,
    Je fais un compte à rebours, mais je souhaite rajouter du temps au chronomètre quand je veux. Voila mes fonctions:

    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
    var minutes = 0;
    var heures = 0;
    var secondes = 0;
     
    function start_timer() {
    	total_secondes = secondes * 1000;
    	if (secondes > 60) {
    		minutes = secondes / 60;
    		secondes = secondes - minutes * 60;
    	}
    	if (minutes > 60) {
    		heures = minutes / 60;
    		minutes = minutes - heures * 60;
    	}
    	var actif = window.setInterval("change_timer()", 1000);
    	window.setTimeout("window.clearInterval(actif)",total_secondes);
    }
     
    function add_time(time) {
    	secondes+= time;
    }
     
    function change_timer() {
    	if (secondes > 0) {
    		secondes-= 1;
    	}
    	else {
    		if (secondes == 0 && minutes > 0) {
    			secondes = 59;
    			minutes-= 1;
    		}
    		else {
    			if (secondes == 0 && minutes == 0 && heures > 0) {
    			secondes = 59;
    			minutes = 59;
    			heure-= 1;
    			}
    		}
    	}
    	if (heures < 10) rheures = '0'+heures; else rheures = heures;
    	if (minutes < 10) rminutes = '0'+minutes; else rminutes = minutes;
    	if (secondes < 10) rsecondes = '0'+secondes; else rsecondes = secondes;
    	document.getElementById("decompte").innerHTML = rheures+':'+rminutes+':'+rsecondes;
    }
    Puis sur une page php j'ai ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
       echo '<script type="text/javascript">'
              .'add_time('.unserialize($_SESSION['time']).');'
    	     .'start_timer();'
    	     .'</script>';
    Mais si par exemple je pars de 60 secondes, je laisse écouler jusquà 50, puis je rejouter 60 secondes, le chrono redémarre a 60 secondes et non 110 secondes.
    Comment dois-je faire je ne vois pas
    Merci

  2. #2
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    euh moi ca marche :
    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
    <script type='text/javascript'>
    	var minutes = 0;
    var heures = 0;
    var secondes = 0;
    var actif = null;
     
    function start_timer() {
       total_secondes = secondes * 1000;
       if (secondes > 60) {
          minutes = secondes / 60;
          secondes = secondes - minutes * 60;
       }
       if (minutes > 60) {
          heures = minutes / 60;
          minutes = minutes - heures * 60;
       }
       actif = window.setInterval("change_timer()", 1000);
       window.setTimeout("window.clearInterval(actif)",total_secondes);
    }
     
    function add_time(time) {
       secondes+= time;
    }
     
    function change_timer() {
       if (secondes > 0) {
          secondes-= 1;
       }
       else {
          if (secondes == 0 && minutes > 0) {
             secondes = 59;
             minutes-= 1;
          }
          else {
             if (secondes == 0 && minutes == 0 && heures > 0) {
             secondes = 59;
             minutes = 59;
             heure-= 1;
             }
          }
       }
       if (heures < 10) rheures = '0'+heures; else rheures = heures;
       if (minutes < 10) rminutes = '0'+minutes; else rminutes = minutes;
       if (secondes < 10) rsecondes = '0'+secondes; else rsecondes = secondes;
       document.getElementById("decompte").innerHTML = rheures+':'+rminutes+':'+rsecondes;
    }
    </script>
    <div id="decompte"></div>
    <script type="text/javascript">
              add_time(60);
            start_timer();
            </script>
    <input type="button" onclick="add_time(60)" value="add 60s" />
    par contre on a bien 110 si je click a 50 sur le bouton au lieu de 1 min 50s
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  3. #3
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    au lieu du setTimeout, je mettrais un if dans change_timer qui fais le clearIntervall si ton temps est a 0
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  4. #4
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Oui ce code marche avec le bouton mais en fait ce qui plante dans mon cas c'est que ma page est rechargée
    Donc à chaque fois

    <script type="text/javascript">
    add_time(60);
    start_timer();
    </script>
    est réexecuté...
    Comment faire?

  5. #5
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    ben met toi un param dans l url pour repasser a ta page le nombre restant
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  6. #6
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Justement mon problème c'est de savoir à combien est le chrono quand je recharge la page

  7. #7
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    comment reload tu ta page ?
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  8. #8
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    En fait je poste un formulaire vers la même page qui récupère le temps à ajouter (en simplifiant). Là j'exécute la fonction add_time() et start_time().

    P.S Important: quand je poste, je récupère toutes les infos que je gère mais je fais derrière un header(location) vers cette même page pour éviter de re-poster lors d'une éventuelle actualisation.

  9. #9
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    ben au lieu du header location, fais une redir js comme ca tu peux construire ton url en y mettant ton nombre de secondes
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  10. #10
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Là encore ce n'est pas possible enfin je pense parce que l'url ne doit pas être modifiable par l'utilisateur.
    Une question: quand je recharge ma page, mes seondes javascripts sont perdues? Tou recommence obligatoirement?

  11. #11
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    oui pour la perte des données (meme si spacefrog te parlera des variables navigator )

    tu peux tres bien faire un truc comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var monurl = "http://www.monsite.com/mapage.php?seconds="+seconds;
    document.location.replace(monurl);
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  12. #12
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    C'est vrai que c'est une bonne solution.
    Mais après longue et mure réflexion ( ), j'ai décidé d'utiliser unix_timestamp php et des table SQL. J'en aurait de toute façon besoin au cas ou le navigateur est quitté. Je pense que je devrai mieux m'en sortir avec

    Désolé mais merci de ton aide

Discussions similaires

  1. Une histoire de compte à rebours (avec formulaire)
    Par Olivier14 dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 04/03/2009, 13h43
  2. [timer] Compte à rebours pour redirection !
    Par Raideman dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 31/12/2005, 20h07
  3. compte à rebours
    Par Datord dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 17/11/2005, 21h22
  4. compte à rebours
    Par etoile1506 dans le forum C
    Réponses: 10
    Dernier message: 27/10/2005, 15h20
  5. 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