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 :

[AJAX] Compte à rebours PHP Javascript ajax


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 62
    Par défaut [AJAX] Compte à rebours PHP Javascript ajax
    Bonjour à tous,

    J'ai un compte à rebours en php dont le code est ci-dessous :

    <?
    $nbSecondes= 360 -(mktime() % 360);
    $minutes = $nbSecondes / 60;
    $secondes = $nbSecondes % 60;
    if ($secondes<10) {
    $secondes="0".$secondes;
    }
    $compteARebours = '0' . intval($minutes) . ' : ' . $secondes;

    echo $compteARebours;
    ?>
    Pour faire défiler le compte à rebours sans recharger la page, j'utilise un script javascript -ajax.
    Celui-ci fait défiler le compte à rebours et affiche les réponses à la fin du compte à rebours sans recharger la page (c'est un jeu ou les réponses apparaissent au bout du compte à rebours).

    Les problèmes : lorsque je mets des caractères comme "0" et ":" dans la variable $compteARebours, le compte à rebours s'affiche correctement, mais que la première seconde. Ensuite, il affiche NaN (Not a Number).
    Si j'enlève les caractères, cela fonctionne. Dois-je donc modifier et rajouter quelque chose à la variable dans le php pour que cela fonctionne, ou dois-je modifier le javascript ci-dessous?

    Le second problème : lorsque je fais défiler le compte à rebours en php, en rechargeant la page, tout va bien. Il défile bien de 59 à 00 secondes.
    Par contre, et lorsque j'enlève les caractères pour faire mes tests, pour ne pas avoir le Nan, lors du premier chargement, tout va bien, mais dès qu'il arrive à 400 (pour 4 minutes 04:00), il passe alors à 399, au lieu de 359. Lorsque je recharge, alors les secondes sont de nouveau correctes...

    Un coup de main la-dessus?

    Le javascript :

    <script language=javascript>
    var x;

    function tempsSession()
    {
    var xhr_object = null;

    if(window.XMLHttpRequest) // Firefox
    xhr_object = new XMLHttpRequest();
    else if(window.ActiveXObject) // Internet Explorer
    xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
    else { // XMLHttpRequest non supporté par le navigateur
    alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
    return;
    }

    var method = "GET";
    var filename = "renvoyeTempsRestantSession.php";

    var data = null;

    xhr_object.open(method, filename, true);

    xhr_object.onreadystatechange = function() {
    if(xhr_object.readyState == 4) {
    var tmp = xhr_object.responseText;
    document.form1.tempsRestantInitial.value = tmp;
    document.form1.tempsRestant.value = tmp;
    }
    }
    xhr_object.send(data);
    }

    function Decompte() {
    //((document.form1.tempsRestant.value > 0)) ? (window.document.form1.tempsRestant.value = --valeur) : (window.clearInterval(x));
    window.document.form1.tempsRestant.value--;
    if (window.document.form1.tempsRestant.value == 0) {
    window.clearInterval(x);
    window.document.form1.submit.disabled = false;
    window.document.getElementById("reponse").style.visibility="visible";
    }

    }

    function init() {
    x = window.setInterval('Decompte()', 1000);
    }

    function initCompteur()
    {
    tempsSession();
    init();

    }


    </script>

    Merci à vous... Par avance...

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    window.document.form1.tempsRestant.value--;
    tu fais ici une opération avec un opérateur numérique.
    Or :
    1) un .value est de type string (au passage une synatxe plus compatible )
    =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.forms['form1'].elements['tempsRestant'].value = parseInt(document.forms['form1'].elements['tempsRestant'].value)--;
    2) ce n'est pas un numérique sur lequel doit être faite l'opération, mais sur un type date (pour passer à 03:59 au lieu de 03:99)

    A+

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 62
    Par défaut
    Tout d'abord, merci de prendre mon problème en considération...

    Excuse mon ignorance, mais je ne sais pas quoi faire de ton bout de code...

    Et comment faire l'opération sur un type date...

    Merci...

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par syl2042
    Excuse mon ignorance, mais je ne sais pas quoi faire de ton bout de code...
    C'était juste l'explication d'une des erreurs
    Et comment faire l'opération sur un type date...
    Tu peux t'inspirer des 2 premiers posts de cette discussion ...

    A+

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 62
    Par défaut
    Bon, je suis désolé, mais je ne vois pas...

    Si tu pouvais consacrer 2 minutes à mon pb, je t'en serais reconnaissant jusqu'à la fin de mes jours

    Lorsque je modifie mon code avec le tiens, je vois bien qu'il me prend enfin les caractères 0 et :.

    Cependant, le script ne se raffraichit plus et donc le compte à rebours est figé.

    Voici ce que j'avais :

    function Decompte() {
    window.document.form1.tempsRestant.value--;
    if (window.document.form1.tempsRestant.value == 0) {
    window.clearInterval(x);
    window.document.form1.submit.disabled = false;
    window.document.getElementById("reponse").style.visibility="visible";
    }
    Voici ce que je fais avec ton code :

    function Decompte() {
    window.document.form1.tempsRestant.value = parseInt(document.form1.tempsRestant.value)--;
    if (window.document.form1.tempsRestant.value == 0) {
    window.clearInterval(x);
    window.document.form1.submit.disabled = false;
    window.document.getElementById("reponse").style.visibility="visible";
    }
    Quant à la discussion que tu m'as transmise, je ne vois rien qui m'orienterait...

    Si tu peux m'aider sur ce coup là... J'suis pas loin...

  6. #6
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par syl2042
    Quant à la discussion que tu m'as transmise, je ne vois rien qui m'orienterait...
    Ben ... c'est ton script de compte à rebours (dans les 2 premiers posts)
    EDIT : le 2° est plus lisible ...

    Désolé, je n'ai pas le temps de le ré-écrire. En plus il semble bien comme ça, et il est testé ...

    A+

Discussions similaires

  1. Réponses: 4
    Dernier message: 11/01/2011, 22h40
  2. [AJAX] 'is not defined' Javascript /Ajax
    Par RichardP dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 12/05/2007, 14h27
  3. [AJAX] Temps d'apprentissage d'AJAX avec connaissances PHP/SQL
    Par ayvong dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 29/04/2007, 10h18

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