Bonjour à tous,
J'ai un compte à rebours en php dont le code est ci-dessous :
Pour faire défiler le compte à rebours sans recharger la page, j'utilise un script javascript -ajax.<?
$nbSecondes= 360 -(mktime() % 360);
$minutes = $nbSecondes / 60;
$secondes = $nbSecondes % 60;
if ($secondes<10) {
$secondes="0".$secondes;
}
$compteARebours = '0' . intval($minutes) . ' : ' . $secondes;
echo $compteARebours;
?>
Celui-ci fait défiler le compte à rebours et affiche les réponses à la fin du compte à rebours sans recharger la page (c'est un jeu ou les réponses apparaissent au bout du compte à rebours).
Les problèmes : lorsque je mets des caractères comme "0" et ":" dans la variable $compteARebours, le compte à rebours s'affiche correctement, mais que la première seconde. Ensuite, il affiche NaN (Not a Number).
Si j'enlève les caractères, cela fonctionne. Dois-je donc modifier et rajouter quelque chose à la variable dans le php pour que cela fonctionne, ou dois-je modifier le javascript ci-dessous?
Le second problème : lorsque je fais défiler le compte à rebours en php, en rechargeant la page, tout va bien. Il défile bien de 59 à 00 secondes.
Par contre, et lorsque j'enlève les caractères pour faire mes tests, pour ne pas avoir le Nan, lors du premier chargement, tout va bien, mais dès qu'il arrive à 400 (pour 4 minutes 04:00), il passe alors à 399, au lieu de 359. Lorsque je recharge, alors les secondes sont de nouveau correctes...
Un coup de main la-dessus?
Le javascript :
<script language=javascript>
var x;
function tempsSession()
{
var xhr_object = null;
if(window.XMLHttpRequest) // Firefox
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // Internet Explorer
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
return;
}
var method = "GET";
var filename = "renvoyeTempsRestantSession.php";
var data = null;
xhr_object.open(method, filename, true);
xhr_object.onreadystatechange = function() {
if(xhr_object.readyState == 4) {
var tmp = xhr_object.responseText;
document.form1.tempsRestantInitial.value = tmp;
document.form1.tempsRestant.value = tmp;
}
}
xhr_object.send(data);
}
function Decompte() {
//((document.form1.tempsRestant.value > 0)) ? (window.document.form1.tempsRestant.value = --valeur) : (window.clearInterval(x));
window.document.form1.tempsRestant.value--;
if (window.document.form1.tempsRestant.value == 0) {
window.clearInterval(x);
window.document.form1.submit.disabled = false;
window.document.getElementById("reponse").style.visibility="visible";
}
}
function init() {
x = window.setInterval('Decompte()', 1000);
}
function initCompteur()
{
tempsSession();
init();
}
</script>
Merci à vous... Par avance...
Partager