[javascript] Compte à rebours bizarre
ska3110
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
Zozo -
Zozo -
Bonjour,
j'ai besoin pour mon projet actuel d'un compte à rebours. J'ai pensé au javascript. La particularité de ce compte à rebours est qu'il doit être le même pour tous les utilisateurs de mon site en même tps (en effet il s'agit d'un compte à rebours avant le tirage d'une loterie). Pour cela, je recupère la date et l'heure de mon dernier tirage dans ma base, je lui ajoute l'intervalle de temps entre deux tirages et je lance le compte à rebours jusqu'a cette nouvelle date. C'est ici que les bizarreries commencent :
des fois le compte a rebours demarre correctement (1min et05sec avant le prochain tirage)
des fois il n'en fait qu'a sa tête : (59min et 50sec avant le prochain tirage)
De plus je souhaiterai qu'une fois le 0min et 0 sec atteint, il s'arrete et ne continue pas (d'ou la partie secondsRound==0 && minutesRounds==0) mais affiche un bouton permettant de lancer une autre page php.
Ce qui est bizarre c'est que certaines fois tout fonctionne parfaitement et d'autres rien ne marche !
merci de votre aide, je joins le code en question
j'ai besoin pour mon projet actuel d'un compte à rebours. J'ai pensé au javascript. La particularité de ce compte à rebours est qu'il doit être le même pour tous les utilisateurs de mon site en même tps (en effet il s'agit d'un compte à rebours avant le tirage d'une loterie). Pour cela, je recupère la date et l'heure de mon dernier tirage dans ma base, je lui ajoute l'intervalle de temps entre deux tirages et je lance le compte à rebours jusqu'a cette nouvelle date. C'est ici que les bizarreries commencent :
des fois le compte a rebours demarre correctement (1min et05sec avant le prochain tirage)
des fois il n'en fait qu'a sa tête : (59min et 50sec avant le prochain tirage)
De plus je souhaiterai qu'une fois le 0min et 0 sec atteint, il s'arrete et ne continue pas (d'ou la partie secondsRound==0 && minutesRounds==0) mais affiche un bouton permettant de lancer une autre page php.
Ce qui est bizarre c'est que certaines fois tout fonctionne parfaitement et d'autres rien ne marche !
merci de votre aide, je joins le code en question
<?php $user=$_POST['username']; //********************************************************************** //Connexion a la base (récupération de la base) $connect=mysql_connect('******','********','*******'); $base = "*******"; mysql_select_db($base,$connect); //********************************************************************** $query = "SELECT * FROM Tirage ORDER BY NumTirage"; $result = mysql_query($query); while ($row = mysql_fetch_array($result)){ $numTirage=$row["NumTirage"]; $date = strtotime($row["Date"]); } $date=$date+120; //date vaut la date du prochain tirage $numTirage++; //echo "date = ".$date."<br/>"; $time=time(); //echo "time = ".$time; $str=date('M d Y H:i:s',$date); //echo "str = ".$str; //echo "diff =".$diff; echo '<html> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <head> <SCRIPT LANGUAGE="Javascript" SRC="./components/com_hello/fonctions.js" charset=utf-8> </SCRIPT> <link href="./components/com_hello/test.css" rel="stylesheet" type="text/css" /> <SCRIPT LANGUAGE="JavaScript"> <!-- function getTime(str) { var string=str; now = new Date(); y2k = new Date(string); days = (y2k - now) / 1000 / 60 / 60 / 24; daysRound = Math.floor(days); hours = (y2k - now) / 1000 / 60 / 60 - (24 * daysRound); hoursRound = Math.floor(hours); minutes = (y2k - now) / 1000 /60 - (24 * 60 * daysRound) - (60 * hoursRound); minutesRound = Math.floor(minutes); seconds = (y2k - now) / 1000 - (24 * 60 * 60 * daysRound) - (60 * 60 * hoursRound) - (60 * minutesRound); secondsRound = Math.round(seconds); sec = (secondsRound == 1) ? " seconde" : " secondes"; min = (minutesRound == 1) ? " minute, " : " minutes, "; hr = (hoursRound == 1) ? " heure" : " heures, "; dy = (daysRound == 1) ? " jour" : " jours, " document.timeForm.input1.value = "Encore " +minutesRound + min + secondsRound + sec + " avant le prochain tirage !"; if (minutesRound==0){ if (secondsRound==0){ document.getElementById(\'bouton\').innerHTML=\'<INPUT TYPE=\"submit\" VALUE=\"Vérifiez si vous avez gagné\">\'; document.timeForm.input1.value = "Tirage effectué"} else{ newtime = window.setTimeout(function(string){getTime(str)},1000); } } else{ newtime = window.setTimeout(function(string){getTime(str)},1000); } } // --> </script> </head><body onLoad="getTime(\''.$str.'\')"> <form name=timeForm> <input type="texte" name=input1 size=110 border-style="none" style="border-bottom: 0px solid; border-left: 0px solid;border-right: 0px solid;border-top: 0px solid;font:12px arial, helvetica,sans-serif"> </form>'; /////////////////////////////////////////////////////////////////////////////////////////////////////////////// if(isset($_POST["valeurs"])){ $chaine = $_POST["valeurs"]; $coeff = $_POST["liste"]; $query = "INSERT INTO `kadoloto`.`GrilleJouee` (`Pseudo` ,`NumTirage` ,`NumerosJoues` ,`Coeff`)VALUES ('$user', '$numTirage', '$chaine', '$coeff'); "; $result=mysql_query($query); } /////////////////////////////////////////////////////////////////////////////////////////////////////////////// //********************************************************************** //Calcul du nombre de parties jouées et décrémentation du nombre de parties restantes $query="SELECT * FROM Client WHERE Pseudo = '$user'"; $result = mysql_query($query); $row = mysql_fetch_array($result); $existant = $row['Nb_Parties_Restantes']; $nb_parties_rest=$existant-$coeff; if ($nb_parties_rest>=0){// on verifie que le nb de parties restantes est suffisant $query="UPDATE`Client` SET `Nb_Parties_Restantes` = '$nb_parties_rest' WHERE CONVERT(`Client`.`Pseudo` USING utf8 ) = '$user' LIMIT 1 "; $result = mysql_query($query); } else echo "<h1>Vous n'aviez pas assez de parties restantes</h1>"; //********************************************************************** echo "<FORM METHOD=\"POST\" ACTION=\"hello3.php\" ENCTYPE=\"x-www-form-urlencoded\">"; echo "<INPUT TYPE=\"hidden\" NAME=\"username\" VALUE=".$user.">"; echo "<div id=bouton></div>"; echo '</body></html>' ?>
A voir également:
- [javascript] Compte à rebours bizarre
- Créer un compte google - Guide
- Installer windows 10 sans compte microsoft - Guide
- Créer un compte gmail - Guide
- Comment savoir qui regarde mon compte facebook - Guide
- Créer un compte instagram sur google - Guide
3 réponses
Petite précision supplémentaire : je me suis aperçu que le seul moment ou le compte à rebours déconne est une période de 36 secondes entre le tirage précédent et le tirage suivant. Cela serait-il du à un décallage entre l'heure du serveur et l"heure de ma machine ? les fonctions utilisées utilisent elles toutes les deux l'heure du serveur ?
Si vous avez des idées.....
Si vous avez des idées.....
Le problème vient d'une différence de temps entre l'heure du serveur et l'heure de la machine cliente car le javascript se base sur l'heure du client et pas sur celle du serveur.
Si vous avez des idées sur comment recupérer l'heure du serveur via javascript, requetes AJAX et headers HTML, un ptit coup de main serait pas de refus
Si vous avez des idées sur comment recupérer l'heure du serveur via javascript, requetes AJAX et headers HTML, un ptit coup de main serait pas de refus