compte a rebours

Petit nouveau ! | 6 Messages

02 déc. 2007, 12:53

Bonjour,
j'essaye de faire un compte a rebours, et a la fin, il execute des instructions...
Mais pour l'instant j'en suis pas encore la, je bloque deja pour afficher le temps restant...
Il me met: "Il reste 01/01/1970 00h 34min 04s avant la fin du compte a rebours" (par eemple)

Voici mon code:
<?php
	
	//Partie date actuelle
	$heure_actuelle = date('H');
	$minute_actuelle = date('i');
	$seconde_actuelle = date('s');
	$jour_actuel = date('d');
	$mois_actuel = date('m');
	$annee_actuelle = date('Y');
	$timestamp_actuel = mktime($heure_actuelle, $minute_actuelle, $seconde_actuelle, $mois_actuel, $jour_actuel, $annee_actuelle);
	
	//Partie date de la fin
	$heure_fin = 11;
	$minute_fin = 26;
	$seconde_fin = 0;
	$jour_fin = 2;
	$mois_fin = 12;
	$annee_fin = 2007;
	$timestamp_fin = mktime($heure_fin, $minute_fin, $seconde_fin, $mois_fin, $jour_fin, $annee_fin);
	
	//Partie compte a rebours
	$timestamp_reste = $timestamp_fin - $timestamp_actuel;
	
	
	echo 'Nous sommes le '.$jour_actuel.'/'.$mois_actuel.'/'.$annee_actuelle.' et il est '.$heure_actuelle.':'.$minute_actuelle.':'.$seconde_actuelle.'. <br />';
	echo 'Le timestamp actuel est '.$timestamp_actuel.'<br /><br />';
	echo 'Le compte a rebours s\'arretera le '.$jour_fin.'/'.$mois_fin.'/'.$annee_fin.' a '.$heure_fin.':'.$minute_fin.':'.$seconde_fin.'<br />';
	echo 'Le timestamp de la fin est '.$timestamp_fin.'.<br /><br />';
	
	echo 'Il reste '.date('d\/m\/Y H\h i\m\i\n s\s', $timestamp_reste).' avant la fin du compte a rebours';
	
?>

Eléphant du PHP | 75 Messages

02 déc. 2007, 13:20

Et quel est ton problème?

Si tu veux un compte à rebours dynamique qui s'affiche dynamiquement sans recharger la page, ce n'est pas avec PHP que tu pourras faire cela mais avec Javascript.

Les script PHP s'arrêtant dès qu'ils sont fini et tant qu'il n'y a pas rechargement de page (d'où le 'freeze' de ton compte à rebours qui, tu le remarqueras, ne s'active qu'à chaque rechargement de page).

Petit nouveau ! | 6 Messages

02 déc. 2007, 13:30

non, le dinamique n'est pas mon probleme... en fait, lorqu'on affiche le temps restant

par exemple, supposont que l'heure reelle est 12h25
<?php
    
    //Partie date actuelle
    $heure_actuelle = date('H');
    $minute_actuelle = date('i');
    $seconde_actuelle = date('s');
    $jour_actuel = date('d');
    $mois_actuel = date('m');
    $annee_actuelle = date('Y');
    $timestamp_actuel = mktime($heure_actuelle, $minute_actuelle, $seconde_actuelle, $mois_actuel, $jour_actuel, $annee_actuelle);
    
    //Partie date de la fin
    $heure_fin = 12;
    $minute_fin = 40;
    $seconde_fin = 0;
    $jour_fin = 2;
    $mois_fin = 12;
    $annee_fin = 2007;
    $timestamp_fin = mktime($heure_fin, $minute_fin, $seconde_fin, $mois_fin, $jour_fin, $annee_fin);
    
    //Partie compte a rebours
    $timestamp_reste = $timestamp_fin - $timestamp_actuel;
    
    
    echo 'Nous sommes le '.$jour_actuel.'/'.$mois_actuel.'/'.$annee_actuelle.' et il est '.$heure_actuelle.':'.$minute_actuelle.':'.$seconde_actuelle.'. <br />';
    echo 'Le timestamp actuel est '.$timestamp_actuel.'<br /><br />';
    echo 'Le compte a rebours s\'arretera le '.$jour_fin.'/'.$mois_fin.'/'.$annee_fin.' a '.$heure_fin.':'.$minute_fin.':'.$seconde_fin.'<br />';
    echo 'Le timestamp de la fin est '.$timestamp_fin.'.<br /><br />';
    
    echo 'Il reste '.date('d\/m\/Y H\h i\m\i\n s\s', $timestamp_reste).' avant la fin du compte a rebours';
    
?>


il me met "Il reste 01/01/1970 01h 13min 48s avant la fin du compte a rebours", qui est completepment faux!,
il devrais mettre "il reste 00/00/0000 0h 25min 0s avant la fin du compte a rebours"

j'ai du faire une fausse manip quelque par, mais je vois pas ou

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

02 déc. 2007, 14:18

Utilie time() pour la valeur de $timestamp_actuel, même si ça ne résoud pas ton problème ça devrait aider.

N'utilise pas date() pour exprimer une durée, il va te falloir le faire à la main, eg
$secondes_reste = $timestamp_reste % 60;
$minutes_reste = floor($timestamp_reste / 60) % 60;
$heures_reste = floor($timestamp_reste / 3600) % 24;
$jours_reste = floor($timestamp_reste / 86400);