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 :

Faire décompter le temps restant dynamiquement entre deux dates


Sujet :

JavaScript

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 329
    Points : 126
    Points
    126
    Par défaut Faire décompter le temps restant dynamiquement entre deux dates
    Bonjours

    J'ai fais une fonction de compte à rebour qui fonctionne avec la date du client en dynamique + la date de fin en php.

    J'ai reussit à mettre la date du serveur php dans le javascript. Le compte à rebour s'affiche mais il devient statique. Je suis obliger d'avoir recour à des refresh pour le voir défiler.

    Ma Question est comment faire pour le re rendre dynamique ?

    Code qui fonctionne avec une date de fin en php et une date du jour coté client de manière dynamique.

    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
    <?php
    session_start();
    mysql_connect("localhost","root","");
    mysql_select_db("ibe");
    $a=26;
    $sql ="SELECT date_fin FROM fr_part_demande_to_revendeur WHERE n_dem_part =".$a;
    $af = mysql_query($sql);
    $res = mysql_fetch_object($af);
    $b = $res->date_fin;
    echo "$b<br>";
    $tableau = split('[- ]',$b);
    $annee = $tableau[0];
    $mois = $tableau[1];
    $jours = $tableau[2];
    $heures = $tableau[3];
    $minutes = $tableau[4];
    ?>
    <html>
    <head>
    <SCRIPT LANGUAGE="JavaScript">
    function disp_delai()
    	{
    	document.forms[0].elements[0].value=delai(<?php echo $annee;?>,<?php echo $mois;?>,<?php echo $jours;?>,<?php echo $heures;?>,<?php echo $minutes;?>);
    	setTimeout("disp_delai()",1000);
    	}
    function delai(annee,mois,jour,heure,min)
    	{
    	var date_fin=new Date(annee,mois-1,jour,heure,min);
    	var date_jour=new Date();
    	var tps=(date_fin.getTime()-date_jour.getTime())/1000;
    	var j=Math.floor(tps/3600/24);
    	tps=tps % (3600*24);
    	var h=Math.floor(tps / 3600);
    	tps=tps % 3600;
    	var m=Math.floor(tps/60);
    	tps=tps % 60
    	var s=Math.floor(tps);
    	var txt=j+"j "+h+"h"+m+"m"+s+"s";
        return txt;
    }
    </script>
    </head>
    <body onLoad="disp_delai()">
    <table border="1" align="center">
    <tr>
    <td align="center"><form><input type="text" name="disp_delai" value=""/></form></td>
    </tr>
    </table>
    </body>
    </html>
    Ca cela fonctionne mais si je replace le code rouge par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var date_jour=new Date(<?php echo date('Y,m-1,d,H,i,s');?>);
    pour avoir la date du serveur php.
    Cela fonctionne aussi , mais le décompte automatique ne se fait plus, il faut que j'utilise le refesh de la page pour voir le temps restant défiler.

    Que faut il modifier dans code si dessous pour cela redevienne dynamique avec la date du serveur.

    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
    <?php
    session_start();
    mysql_connect("localhost","root","");
    mysql_select_db("ibe");
    $a=26;
    $sql ="SELECT date_fin FROM fr_part_demande_to_revendeur WHERE n_dem_part =".$a;
    $af = mysql_query($sql);
    $res = mysql_fetch_object($af);
    $b = $res->date_fin;
    echo "$b<br>";
    $tableau = split('[- ]',$b);
    $annee = $tableau[0];
    $mois = $tableau[1];
    $jours = $tableau[2];
    $heures = $tableau[3];
    $minutes = $tableau[4];
    ?>
    <html>
    <head>
    <SCRIPT LANGUAGE="JavaScript">
    function disp_delai()
    	{
    	document.forms[0].elements[0].value=delai(<?php echo $annee;?>,<?php echo $mois;?>,<?php echo $jours;?>,<?php echo $heures;?>,<?php echo $minutes;?>);
    	setTimeout("disp_delai()",1000);
    	}
    function delai(annee,mois,jour,heure,min)
    	{
    	var date_fin=new Date(annee,mois-1,jour,heure,min);
    	var date_jour=new Date(<?php echo date('Y,m-1,d,H,i,s');?>);
    	var tps=(date_fin.getTime()-date_jour.getTime())/1000;
    	var j=Math.floor(tps/3600/24);
    	tps=tps % (3600*24);
    	var h=Math.floor(tps / 3600);
    	tps=tps % 3600;
    	var m=Math.floor(tps/60);
    	tps=tps % 60
    	var s=Math.floor(tps);
    	var txt=j+"j "+h+"h"+m+"m"+s+"s";
        return txt;
    }
    </script>
    </head>
    <body onLoad="disp_delai()">
    <table border="1" align="center">
    <tr>
    <td align="center"><form><input type="text" name="disp_delai" value=""/></form></td>
    </tr>
    </table>
    </body>
    </html>
    Merci d'avance !!!!

  2. #2
    Membre actif
    Homme Profil pro
    Inscrit en
    Avril 2006
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Avril 2006
    Messages : 245
    Points : 239
    Points
    239
    Par défaut
    C'est un peu logique...
    Dans le premier prog date_jour = new Date() va prendre la date courante à la seconde près si bien que lors de la remise à jour provoquée par setTimeout, on va avoir un décompte.
    Si maintenant tu impose une date à date_jour, le setTimeout fonctionne bel et bien mais une date fixe moins une autre date fixe = une date FIXE...

    Le probleme est que ton javascript se met bien à jour met le PHP ne se recharge pas donc la date fournie par echo date('Y,m-1,d,H,i,s'); est toujours la même !!!

    Normalement un compte à rebours se fait sur une date dans le futur par rapport à la date courante...
    Guy777

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Avril 2006
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Avril 2006
    Messages : 245
    Points : 239
    Points
    239
    Par défaut
    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
     
    <html>
    <head>
    <SCRIPT LANGUAGE="JavaScript">
    function disp_delai()
    	{
    	document.forms[0].elements[0].value=delai(2007, 1, 1, 0, 0);
    	setTimeout("disp_delai()",1000);
    	}
    function delai(annee,mois,jour,heure,min)
    	{
    	var date_fin=new Date(annee,mois-1,jour,heure,min);
    	var date_jour=new Date();
    	var tps=(date_fin.getTime()-date_jour.getTime())/1000;
    	var j=Math.floor(tps/3600/24);
    	tps=tps % (3600*24);
    	var h=Math.floor(tps / 3600);
    	tps=tps % 3600;
    	var m=Math.floor(tps/60);
    	tps=tps % 60
    	var s=Math.floor(tps);
    	var txt=j+"j "+h+"h"+m+"m"+s+"s";
        return txt;
    }
    </script>
    </head>
    <body onLoad="disp_delai()">
    <table border="1" align="center">
    <tr>
    <td align="center"><form><input type="text" name="disp_delai" value=""/></form></td>
    </tr>
    </table>
    </body>
    </html>
    Voici pour exemple le programme pour décompter à partir d'aujourd'hui jusqu'au 1er janvier 2007
    Guy777

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 329
    Points : 126
    Points
    126
    Par défaut rep
    Je le connais ce code.

    Puisque la date serveur est figée et que c'est normal car elle est appelée une fois lors du chargment de la page

    Peut t on faire ceci avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var date_jour=new Date();
    prendre la date serveur comme point de repère pour le var date_jour. Puis dans une autre fonction la rendre dynamique.

    exemple
    date du jour coté client 2006-07-25 15:59:30 est deja en dynamique car capturé
    date du jour coté serveur fixe lors du chargement de la page 2006-07-25 16:01:5 on s'en sert comme point départ et on l'insère dans une fonction afin qu'elle devienne dynamique
    decompte
    2006-07-25 16:01:5
    2006-07-25 16:01:6
    2006-07-25 16:01:7
    2006-07-25 16:01:8
    ... etc

    Est ce possible ?

  5. #5
    Membre actif
    Homme Profil pro
    Inscrit en
    Avril 2006
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Avril 2006
    Messages : 245
    Points : 239
    Points
    239
    Par défaut
    je ne comprends pas bien ce que tu veux faire !!!
    En tout cas pour ton décompte il faut que tu ais d'une côté une date initialisée avec celle du serveur (arrete moi si je me trompe) et de l'autre la date courante : new Date()...
    Guy777

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 329
    Points : 126
    Points
    126
    Par défaut rep
    ce que je voulais faire c'est

    prendre la date serveur et la rendre de dynamique par une fonction afin de l'insérer dans le calcul à la place de new date
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var date_jour = new Date();
    new Date prend la date coté client. Et par contre si son heure n'est pas à l'heure ca va poser des problèmes.soit le décompte va etre plus long que celui en realité ou plus cour.

    Donc il vaut mieux que j'utilise la date serveur

    Mon but est de faire en sorte de rendre dynamique la date php que j'insere dans du javascript par une fonction afin de l'insérer dans le calcul.

    Comme la date insérer sera dynamique le décompte du temps restant le sera aussi.

    Normalement

  7. #7
    Membre actif
    Homme Profil pro
    Inscrit en
    Avril 2006
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Avril 2006
    Messages : 245
    Points : 239
    Points
    239
    Par défaut
    j'ai ptet qqch

    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
     
    <html>
    <head>
    <SCRIPT LANGUAGE="JavaScript">
     
    var date_fin = new Date();
     
    function disp_delai()
    {
    	document.forms[0].elements[0].value=delai(2006, 6, 25, 16, 40); // ta date php ici
    	setTimeout("disp_delai()",1000);
    }
     
    function delai(annee,mois,jour,heure,min) {
    	var date_jour = new Date();
    	var date_serveur = new Date(annee,mois,jour,heure,min);
    	var tmp = new Date();
     
    	tmp.setTime =date_jour.getTime()-date_fin.getTime()+date_serveur.getTime();
    	var txt = tmp.getDay()+"/"+tmp.getMonth()+"/"+tmp.getFullYear()+" "+tmp.getHours()+":"+tmp.getMinutes()+":"+tmp.getSeconds();
        return txt;
    }
     
    </script>
    </head>
    <body onLoad="disp_delai()">
    <table border="1" align="center">
    <tr>
    <td align="center"><form><input type="text" name="disp_delai" value=""/></form></td>
    </tr>
    </table>
    </body>
    </html>
    Guy777

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 329
    Points : 126
    Points
    126
    Par défaut Rep
    Woww c'est ca


  9. #9
    Membre actif
    Homme Profil pro
    Inscrit en
    Avril 2006
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Avril 2006
    Messages : 245
    Points : 239
    Points
    239
    Par défaut
    bisous
    @+
    Guy777

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

Discussions similaires

  1. [AC-2010] Graphique dynamique entre deux dates
    Par jadix19 dans le forum Access
    Réponses: 3
    Dernier message: 26/05/2015, 10h20
  2. Calculer temps restant entre deux date
    Par jarod6827 dans le forum Langage
    Réponses: 25
    Dernier message: 12/02/2010, 16h07
  3. calculer la temps moyen entre deux dates
    Par zainabsourid dans le forum BIRT
    Réponses: 1
    Dernier message: 24/07/2006, 12h06
  4. Requête pour calculer le temps entre deux dates
    Par Badboy62cfp dans le forum Access
    Réponses: 2
    Dernier message: 19/05/2006, 13h50
  5. Temps de réponse entre deux sites
    Par coup dur dans le forum Décisions SGBD
    Réponses: 6
    Dernier message: 16/10/2003, 15h26

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