Aller au contenu

Chronomètre en PHP


Sujets conseillés

Posté (modifié)

Bonsoir,

Je voudrais savoir s'il existe des fonctions en PHP permettant de réaliser une sorte de chronomètre.

J'explique mon besoin, je voudrais organiser un petit jeu (pas de lot, ni quoique ce soit à gagner au bout, c'est juste pour le fun ;)) dans lequel un visiteur doit répondre à une question le plus rapidement possible.

Donc je pense que le fonctionnement basique pourrait etre celui-ci :

La question s'affiche à l'écran, un compteur démarre... et quand l'utilisateur valide sa réponse en cliquant sur un bouton par exemple, le compteur s'arrête, et je récupère le temps qu'il a mis à répondre dans un variable.

Edit: Ou plutôt que lancer le chronomètre à l'ouverture de la page, afficher un bouton Commencer et Arrêter que l'utilisateur devra lui même appuyer pour lancer et arrêter le chronomètre.

Donc savez vous quelle est la meilleure solution pour réaliser ce petit "chronomètre" ?

Merci d'avance à vous tous,

Bonne soirée.

Bridou

Modifié par Bridou
Posté

Salut Bridou,

Tout simplement en te basant sur une fonction existante: microtime()

Par exemple:

<?php
function microtime_float()
{
 list($usec, $sec) = explode(" ", microtime());
 return ((float)$usec + (float)$sec);
}

$time_start = microtime_float();

// Attends pendant un moment
usleep(100);

$time_end = microtime_float();
$time = $time_end - $time_start;

echo  $time." secondes\n";
?>

Il te suffit de remplacer la ligne usleep(100) par ton code de saisie de réponse.

Posté (modifié)

Merci Dan, effectivement cette solution permet d'avoir un temps très prècis et c'est ce que je cherchais.

Cela dit, j'ai un autre souci, cela fonctionne très bien si je déclenche le chrono à l'ouverture de la page et que je l'arrête en appuyant sur un bouton de validation d'un formulaire, comme suit :

<?php
function microtime_float()
{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}

if(isset($_POST[debut]))
{
$fin  = microtime_float();
$time = $fin - $debut;

echo  $time." secondes\n";
}
else
{
$debut = microtime_float();
echo"
<form method=post>
 <input type=hidden name=debut value=$debut>
 <input type=submit>
<form> ";
}


?>

(c'est un code fait à l'arrache juste pour tester)

Mais j'aimerais maintenant pouvoir déclencher le chronomètre à l'aide d'un bouton, et pour faire ca il n'y a que le javascript je crois, mais on ne peut pas éxécuter du code php sur un OnClick d'un bouton par exemple, me trompes-je ?

Donc comment je pourrais faire un chronomètre qui se déclenche et s'arrête sur l'appuie de deux boutons disctincts (debut - fin) et garder cette précision offerte par les fonctions php ?

Encore merci d'avance,

Bridou

Modifié par Bridou
Posté

Si tes boutons font partie d'un formulaire et ont un nom, tu peux définir le document courant comme action du formulaire, tester ces variable et démarrer ou arrêter le chronomètre selon leur état.

Pas besoin de javascript pour cela.

  • 1 year later...
Posté

Salut :)

C'est aussi un peu ce que je souhaiterais faire mais à la différence que je souhaite connaitre le nombre de secondes entre 2 rechargements d'une page et la je sèche...

En fait j'ai une page d'un tchat qui se rafraichie toutes les 60 secondes, je calcule ainsi le temps de présence d'un connecté. Par contre si celui ci appuie de lui meme sur F5 la valeur est de 60 à chaque fois et je ne sais pas comment faire pour compter les secondes entre le 1er chargement et le rechargement automatique ou via la touche F5

Vous auriez une piste ?

Merci !

Posté

Bonjour,

En utilisant les cookies et la fonction time(), tu peux calculer aisément la différence de temps entre deux chargements de la page...

Au chargement de la page, tu mets dans un cookie la valeur donnée par time(), et au deuxième chargement, tu fais time() - valeur_du_cookie...

Voilà l'idée en gros ;)

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...