Empecher rafraichissement chronomètre dans quiz

Messages postés
122
Date d'inscription
mardi 24 décembre 2002
Dernière intervention
19 février 2019
- - Dernière réponse : cs_eli42
Messages postés
122
Date d'inscription
mardi 24 décembre 2002
Dernière intervention
19 février 2019
- 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
24609
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 février 2019
362
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 121 internautes nous ont dit merci ce mois-ci

cs_eli42
Messages postés
122
Date d'inscription
mardi 24 décembre 2002
Dernière intervention
19 février 2019
-
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.