Empecher rafraichissement chronomètre dans quiz [Résolu]

Signaler
Messages postés
133
Date d'inscription
mardi 24 décembre 2002
Statut
Membre
Dernière intervention
16 juin 2020
-
Messages postés
133
Date d'inscription
mardi 24 décembre 2002
Statut
Membre
Dernière intervention
16 juin 2020
-
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>


--

1 réponse

Messages postés
29616
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 septembre 2020
337
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;


Messages postés
133
Date d'inscription
mardi 24 décembre 2002
Statut
Membre
Dernière intervention
16 juin 2020

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