Empecher rafraichissement chronomètre dans quiz

cs_eli42 116 Messages postés mardi 24 décembre 2002Date d'inscription 30 juillet 2018 Dernière intervention - 30 juil. 2018 à 12:48 - Dernière réponse : cs_eli42 116 Messages postés mardi 24 décembre 2002Date d'inscription 30 juillet 2018 Dernière intervention
- 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

2 réponses

Meilleure réponse
jordane45 22839 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 16 octobre 2018 Dernière intervention - 30 juil. 2018 à 14:35
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;


Merci jordane45 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 95 internautes ce mois-ci

cs_eli42 116 Messages postés mardi 24 décembre 2002Date d'inscription 30 juillet 2018 Dernière intervention - 30 juil. 2018 à 14:46
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.