PHP Countdown mit zwei Terminen

markusgo1967

Lt. Commander
Registriert
März 2009
Beiträge
1.334
Hallo,
habe mir ein Script "ausgeborgt" und es für meine Zwecke modifiziert.
Läuft soweit auch, nur hätte ich gerne beide Termine als Countdown ausgegeben mit einem Absatz zwischen diesen, also ungefahr so:

bis zum Tag X sind es noch x Tage x Std x Min. X Sek.

bis zum Tag Y sind es noch Y Tage Y Std Y Min. Y Sek.

Leider wird nur der erste Termin angezeigt!

und nun der Code:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<meta name="author" content="Patrick Saar" />
<title>PHP Countdown</title>
</head>
<body>
<div id="countdown" style=" font-family: Arial', monospace; font-size: 8 pt; margin-top: 15px;">
<?php
$endTime = array();
$text = array();
$endTime[] = mktime(17, 0, 0, 12, 14, 2013); //Stunde, Minute, Sekunde, Monat, Tag, Jahr;
$text[] = 'zur Weihnachtsfeier im HQ';
$endTime[] = mktime(13, 0, 0, 5, 29, 2014); //Stunde, Minute, Sekunde, Monat, Tag, Jahr;
$text[] = 'zum Clantreffen in Falkensee';


$count_i = 0;
$timeNow = time(true);
while(($endTime[$count_i] - $timeNow) < 0) {
$count_i++;
}
$diffTime = $endTime[$count_i] - $timeNow;

//Berechnung fuer Tage, Stunden, Minuten
if($diffTime >= 0) {
$countdown_d = floor($diffTime / 86400);
$diffTime = $diffTime % 86400;
$countdown_h = floor($diffTime / 3600);
$diffTime = $diffTime % 3600;
$countdown_m = floor($diffTime / 60);
$countdown_s = $diffTime % 60;

//Formatierung
$tage = 'Tage';
if($countdown_s < 10) $countdown_s = '0'.$countdown_s;
if($countdown_m < 10) $countdown_m = '0'.$countdown_m;
if($countdown_h < 10) $countdown_h = '0'.$countdown_h;
if($countdown_d == 1) $tage = 'Tag';

echo '<B>'.$countdown_d.'</b> '.$tage.' und<B> '.$countdown_h.'</b> Std.<B> '.$countdown_m.' </b>Min.<B> '.$countdown_s.'</b> Sek. bis '.$text[$count_i];
}
?>
</div>
</body>
</html>


Besten Dank
Markus
 
du gibst das ganze ja auch nur einmal aus.. du müsstest das dann noch mit "endTime2" modifizieren und eben 2 ausgaben unten machen..
 
Mich beschleicht das Gefühl das deine While-Schleife einfach ein gutes Stück zu früh endet ;) Nimm mal nach dem "$count_i++;" die schließende schweifende Klammer raus :) Die gehört nach oberflächlichem Überfliegen nämlich erst nach deine Echo-Ausgabe (und steht da auch schon!). Kann sein, dass ein überfleißiger Editor mit automatischen Code-Snippets etwas... naja übereifrig war ;)
 
Zuletzt bearbeitet:
Danke, dann wird mirt die Sache wohl zu hoch, habe leider keine großen PHP Erfahrung, bei mir eher Try and Error...
Nachdem ich die schweifige Klammer rausgenommen hatte, lief die Page nicht mehr :-). Die muß wohl doch sein...
 
Zuletzt bearbeitet:
Zu "lief nicht mehr" gabs bestimmt auch eine Fehlermeldung, die genaueres mitgeteilt hätte ;)

edit: dann setz die schweifende Klammer mal hinter die letzte, so dass daraus ein "}}" wird.
Ich bau hier gerade an mehreren Baustellen und kann mich nicht so leicht auf 1000 Dinge konzentrieren xD
 
Zuletzt bearbeitet:
nee, nur eine weisse Seite:-).
 
PHP:
        foreach($text as $t){
            echo '<B>'.$countdown_d.'</b> '.$tage.' und<B> '.$countdown_h.'</b> Std.<B> '.$countdown_m.' </b>Min.<B> '.$countdown_s.'</b> Sek. bis '.$t.'<br>';
        }
 
Ist das ein großes "B" ind "<B>" wegen einem template o.ä.?
Bei mir ist das jetzt klein sonst musst du s wieder ändern.
Dass das nicht Sortiert ist klar, mit der Lösung von Blackbenji kommst du zwar auch weiter aber, da du wohl keine Ahnung davon hast hier zusammengesetzt
(so wird vergangenes nicht dargestellt, aber alles aus dem Aray in der Reihenfolge in ders drin steht, außerdem hab ich die Sekunden rausgenommen die machen ohne Javascript finde ich keinen Sinn):
PHP:
<?php

$endTime = array();
$text = array();
$endTime[] = mktime(17, 0, 0, 12, 14, 2012);
$text[] = "zur 1. Weihnachtsfeier im HQ";
$endTime[] = mktime(0, 31, 0, 6, 25, 2013);
$text[] = "zur 2. Weihnachtsfeier im HQ";
$endTime[] = mktime(17, 0, 0, 12, 14, 2013);
$text[] = "zur Weihnachtsfeier im HQ";
$endTime[] = mktime(13, 0, 0, 5, 29, 2014);
$text[] = "zum Clantreffen in Falkensee";


$count_i = 0;
$timeNow = time(true);

foreach($text as $t){

	$diffTime = $endTime[$count_i] - $timeNow;
	
	if ($diffTime >= 0) {
		$countdown_d = floor($diffTime / 86400);
		$diffTime = $diffTime % 86400;
		$countdown_h = floor($diffTime / 3600);
		$diffTime = $diffTime % 3600;
		$countdown_m = floor($diffTime / 60);
		$countdown_s = $diffTime % 60;
	
		$tage = "Tage";
		if($countdown_s < 10) $countdown_s = "0".$countdown_s;
		if($countdown_m < 10) $countdown_m = "0".$countdown_m;
		if($countdown_h < 10) $countdown_h = "0".$countdown_h;
		if($countdown_d == 1) $tage = "Tag";
		echo '<b>'.$countdown_d.'</b> '.$tage.' und<b> '.$countdown_h.'</b> Std.<b> '.$countdown_m.' </b>Min. bis '.$t.'<br>';
	}
	
	$count_i++;
}

?>

Geht natürlich schöner, das ist nur aus dem vorhandenen zusammengesetzt.
 
Zuletzt bearbeitet:
Mensch, Klasse.
ich wollt ich könnt schöner, aber meine Kenntnisse gehen gen Null...
Deshalb bin ich echt dankbar für Eure Hilfe.
 
Zuletzt bearbeitet:
Zurück
Oben