Empecher rafraichissement chronomètre dans quiz

Messages postés
118
Date d'inscription
mardi 24 décembre 2002
Dernière intervention
6 décembre 2018
- - Dernière réponse : cs_eli42
Messages postés
118
Date d'inscription
mardi 24 décembre 2002
Dernière intervention
6 décembre 2018
- 30 juil. 2018 à 14:46
Bonjour,
j'ai fait une page pour un quiz avec un chronomètre pour calculer le temps
le problème si actualisation du navigateur le chrono repart zéro

J'ai pense à mettre $_SESSION['depart'] avec microtime
et en cas de actualisation de la page avec navigateur recupérer $_SESSION['depart']
je ne sais pas si ca serait fiable mais rien d'autre me vient à l'esprit

un CS aurait la solution en java ou PHP

alert(beau temps belle mer')
Jorgio

<?php
   session_start();
   $seconde = 0;$minute = 0;$heure = 0;     
?>
<body onLoad="clock()" onKeyDown="disableF5(event)">
   <form name='clock' onSubmit='0'><input type='text' id='date' name='date' readonly='true'></form>
   <form name=quizz action=# method=POST enctype='multipart/form-data'>
      <input name='R1' type='radio' value="1">response 1</div><br>
      <input name='R1' type='radio' value="1">response 2</div>
   </form>
   <span onclick='_valider()'>Valider</span>
   
   <script>
    bcle = 0;
    function clock() {
        if (bcle == 0) {
            heure = <?php echo $heure ?>;
            min   = <?php echo $minute ?>;
            sec   = <?php echo $seconde ?>;
        } else {
            sec++;
            if (sec == 60) {
                sec = 0;
                min++;
                if (min == 60) {
                    min = 0;
                    heure++;
                };
            };
        };
        txt = "";
        if (heure < 10) {txt += "0";}
        txt += heure + ":";
        if (min < 10) {txt += "0"}
        txt += min + ":";
        if (sec < 10) {txt += "0"}
        txt += sec;
        timer = setTimeout("clock()", 16.5);
        bcle++;
        document.clock.date.value = txt;
    }
                      
    function disableF5(e) {
          if ((e.which || e.keyCode) === 116 || (e.which || e.keyCode) === 82) {
              debugger;
              e.preventDefault();
          }
      }
    $(document).ready(function() {
        $(document).on("keydown", disableF5);
    });
        
    function _valider(){
         var x = document.getElementById("date").value;
         document.forms['quizz'].action = 'pagevalider?temps='+x;document.forms['quizz'].submit();return true;
    }
    
    </script>
</body>


--
Afficher la suite 

Votre réponse

1 réponse

Meilleure réponse
Messages postés
23610
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 décembre 2018
1
Merci
Bonjour,

Oui, la session sera sûrement le plus simple

Un truc du genre :
session_start();
if(empty($_SESSION['start'])){
  $heure = date('H');
  $minute = date('i');
  $seconde = date('s');
  $_SESSION['start'] = array('H'=>$heure, 'M'=>$minute , 'S'=>$seconde );
}else{
  $heure = $_SESSION['start']['H'];
  $minute = $_SESSION['start']['M'];
  $seconde =$_SESSION['start']['S'];
}


Bien entendu.. si l'utilisateur ferme son navigateur complètement... tu risques de perdre la session.
Le mieux alors serait de stocker les données dans une BDD (en te servant de l'IP de l'utilisateur pour l'identifier éventuellement ).
Mais le principe reste le même.
A toi de voir;


Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CodeS-SourceS

Codes Sources a aidé 106 internautes ce mois-ci

cs_eli42
Messages postés
118
Date d'inscription
mardi 24 décembre 2002
Dernière intervention
6 décembre 2018
-
Slt Jordane
Je vais travailler sur la $_SESSION
Pour ce qui est de stocker pas la peine car une fois le quiz lance il ne peut pas le refaire une deuxième fois il est prévenu sur la première page.
Merci a toi
Jorgio
Commenter la réponse de jordane45

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.