Petit bug dans compte à rebours php

Résolu/Fermé
nico3009 Messages postés 103 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 31 mars 2012 - 3 sept. 2008 à 08:24
nico3009 Messages postés 103 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 31 mars 2012 - 4 sept. 2008 à 09:29
Bonjour,

Voilà, j'ai fait un petit souci dans un compte à rebours php.

Tant que l'heure limite n'est pas atteinte, le compte à rebours marche impec.

Dès que l'heure fixée est atteinte au lieu de m'écrire "Temps écoulé" comme je le voulais, il m'écrit :
"23h59mn59s Temps écoulé" et continue un compte à rebours.

Je précise également que je ne fais affciher les jours, heures et minutes uniquement si elles sont supérieures à 0.

Voici le script, j'attends votre aide. Merci.

$finpronosall = mktime($heureall, $minuteall, $secondeall, $moisall, $jourall, $anneeall);
$timestamp = time();
$resteall = $finpronosall-$timestamp;
$restejoursall = $resteall/86400;
$restejoursall1 = floor($restejoursall);
$resteheuresall = ($resteall - ($restejoursall1 * 86400))/3600;
$resteheuresall1 = floor($resteheuresall);
$resteminall = ($resteall-(($restejoursall1 * 86400)+($resteheuresall1 * 3600)))/60;
$resteminall1 = floor($resteminall);
$restesecall = ($resteall-(($restejoursall1 * 86400)+($resteheuresall1 * 3600)+($resteminall1 * 60)));
$restesecall1 = floor($restesecall);

et pour l'affichage :

if ($restejoursall1 > "0") echo $restejoursall1;
if ($restejoursall1 > "0") echo " jours ";
if ($resteheuresall1 > "0")echo $resteheuresall1;
if ($resteheuresall1 > "0") echo " h ";
if ($resteminall1 > "0") echo $resteminall1;
if ($resteminall1 > "0") echo " min ";
if ($restesecall1 > "0") echo $restesecall1;
if ($restesecall1 > "0") echo " s ";
if ($timestamp > $finpronosall) echo "Temps écoulé";
A voir également:

8 réponses

Profil bloqué
3 sept. 2008 à 08:53
bonjour,
normal qu'il continue dans ce que tu as posté je ne vois pas de demande d'arrêt du compteur.
0
nico3009 Messages postés 103 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 31 mars 2012 1
3 sept. 2008 à 09:45
Ok pour le principe, je ne savais pas en fait.
Par contre je fais comment pour ça?
0
Profil bloqué
3 sept. 2008 à 10:04
j'ai pas tout ton code mais apres le "if ($timestamp > $finpronosall) echo "Temps écoulé";" tu peux mettre une autre fonction qui te permettra soit d'arreter le compteur soit d'aller sur une autre page soit de lancer un autre ordre que l'affichage de temps écoulé ... tout dépend à quoi ton compteur sert
0
nico3009 Messages postés 103 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 31 mars 2012 1
3 sept. 2008 à 11:20
C'est en fait un compte a rebours qui est à titre informatif pour l'utilisateur.
J'ai fait un "active link" dans un autre script et ce compte a rebours lui permet de connaitre jusqu'à quand ce lien va rester actif.
Je veux donc qu'il s'affiche simplement "Temps écoulé" quand la condition <<if ($timestamp > $finpronosall)>> est vérifiée.
Merci d'avance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bonjour
if ($resteall1 >0) echo $restejoursall1," jours ",$resteheuresall1," h ",$resteminall1," min "$restesecall1," s "; 
else echo "Temps écoulé";
0
nico3009 Messages postés 103 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 31 mars 2012 1
3 sept. 2008 à 13:21
Ben je veux pas faire simplement << if ($resteall1 >0) >> parce que sinon il peut m'afficher "0 jours 0 heures 0 minutes 18 secondes" par exemple. Dans mon script je lui demande d'afficher simplement "18 secondes".

Le problème c'est qu'à chaque fois il me remet un compte à rebours de 24 heures!
0
OK, je n'avais pas vu ce point.

if ($timestamp >= $finpronosall) echo "Temps écoulé";
else {
if ($restejoursall1 > 0) echo $restejoursall1," jours "; 
if ($resteheuresall1 > 0)echo $resteheuresall1, " h "; 
if ($resteminall1 > 0) echo $resteminall1," min "; 
if ($restesecall1 > 0) echo $restesecall1," s "; 
}

Comme ça, si le temps est écoulé, il n'exécute pas tout le reste.
Au passage, compare des nombres avec des nombres plutôt qu'avec des textes : $restejoursall1 > 0 et non pas $restejoursall1 > "0"
et compare bien $timestamp >= $finpronosall car sinon, en cas d'égalité, tu n'affiches rien du tout
0
nico3009 Messages postés 103 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 31 mars 2012 1
4 sept. 2008 à 09:29
Ah ok!

Ben merci bien ça marche impec. C'est vrai que je n'ai pas le réflexe de tourner le script à l'envers :-))

Je te remercie beaucoup en tous cas ainsi que titans.fr

Bonne continuation.
0