Countdown soll bei 0 stoppen und nicht im minus Bereich gehen.

master1971

Mitglied
Hallo zusammen,

habe ein Countdown Script gefunden, der geht aber leider ins Minus Bereich.

Der Countdown soll aber bei 0 stoppen und nicht im minus Bereich gehen.

Ich weis nicht welche Abfrage das bei diesem Script bewirkt.

Kann mir einer weiter helfen?

Würde mich sehr freuen.


Der Countdown Script:

PHP:
<?php
 function Countdown($Datum)
{

$Zieldatum = mktime(substr($Datum, 11, 2), substr($Datum, 14, 2), substr($Datum, 
17, 2), substr($Datum, 3, 2), substr($Datum, 0, 2), substr($Datum, 6, 4), -1);

$Differenz = $Zieldatum-time();


$Tage = floor($Differenz/86400);

$Rest = $Differenz-($Tage*86400);

$Stunden = floor($Rest/3600);

$Rest = $Rest-($Stunden*3600);

$Minuten = floor($Rest/60);

$Rest = $Rest-($Minuten*60);


$Zeit = "Tage: $Tage - Stunden: $Stunden - Minuten: $Minuten - Sekunden: $Rest";


return($Zeit);

}


$Datum = "12.09.2012 20:00:00";

echo Countdown($Datum);
?>


Grüße

Master1971
 
PHP:
if($differenz<0) return;
Du musst nur nach der Bildung der Differenz diese prüfen ob sie kleiner als 0 ist ... und dann mit NULL oder FALSE returnen *oder eben "0"*.

PS : Die "Konventionen" ... wenn man es so nennen will ... sind grauenhaft.
 
im Moment ist da noch gar nix drin, dass daruaf prüft.
Du kannst aber auf das $Differenz prüfen, dass dies nicht kleiner als 0 ist

PHP:
function Countdown($Datum){
	$Zieldatum = mktime(substr($Datum, 11, 2), substr($Datum, 14, 2), substr($Datum, 17, 2), substr($Datum, 3, 2), substr($Datum, 0, 2), substr($Datum, 6, 4), -1);

	$Differenz = $Zieldatum-time();
	if($Differenz >= 0){
		$Tage = floor($Differenz/86400);
		$Rest = $Differenz-($Tage*86400);
		$Stunden = floor($Rest/3600);
		$Rest = $Rest-($Stunden*3600);
		$Minuten = floor($Rest/60);
		$Rest = $Rest-($Minuten*60);
		$Zeit = "Tage: $Tage - Stunden: $Stunden - Minuten: $Minuten - Sekunden: $Rest";
	}else{
		$Zeit = "Schon vorbei";
	}
	return($Zeit);
}
 
Hallo SPiKEe,

erstmal danke dir.

muss ich das, nach der "function Countdown($Datum)" schleife machen oder innerhalb?

Ich verstehe die Befehlszeile nicht, in den "if" Anweißungen muss doch geschweifte klammer rein, damit ein Befehl ausgeführt wird oder?.

Bin dankbar, wenn ich genau wüsste, wie.

Danke für die Hilfe.

Grüße

master1071
 
Hallo Yaslaw,

jetzt wo du es mir zeigst, könnt ich im Boden versinken.

Klar, wie sonst.

Es funkt, nach 20 Stunden grübeln.

AAAAAAAAAA ich könnt mir die Harre ...........

Danke euch.

Also Respekt für diese Forum, keine Beleidigungen, schnelle Kompetente Hilfe also so schnell habe ich noch kein Problem gelöst. Nur zu empfehlen.

Grüße

master1971
 
Das freut uns das wir dir so schnell und einfach helfen konnten.
Ich habe mein Beispiel bewusst einfach gehalten. Das du jedoch noch nicht die Erfahrung hast um es sinnvoll in den Code einzupflegen wusste ich nicht ... dafür entschuldige ich mich.

Das einzige was ich jetzt an deinem und dem zufolge an dem von Yaslaw kopierten Code zu nörgeln hätte wären die schreibweisen. Aber da diese für die Funktion völlig unwichtig ist ist das eher Geschmackssache als Vorschrift.
 
@master1971
Bei der Version von SPiKEe braucht es keine {}. Mit dem return wird die Funktion bagebrochen. Man könnte sie einfach noch um einen Aussagekräftigen Rückgabewert ergänzen.

Und um SPiKEe eine freude zu machen gleich noch umformatiert...
PHP:
/**
 * @param String	$datum		Datum im Stringformat '12.09.2012 20:00:00'
 */
function countdown($datum){
	//$zieldatum = mktime(substr($datum, 11, 2), substr($datum, 14, 2), substr($datum, 17, 2), substr($datum, 3, 2), substr($datum, 0, 2), substr($datum, 6, 4), -1);
	//mit strtotime() ist ungetestet. Müsste aber mit deinem Datumsformat funktionieren
	$differenz = strtotime($datum)-time();
	if($differenz <= 0) return "Schon vorbei";
	$tage = floor($differenz/86400);
	$rest = $differenz-($tage*86400);
	$stunden = floor($rest/3600);
	$rest = $rest-($stunden*3600);
	$minuten = floor($rest/60);
	$rest = $rest-($minuten*60);
	return "Tage: {$tage} - Stunden: {$stunden} - Minuten: {$minuten} - Sekunden: {$rest}";
}
 
Zuletzt bearbeitet:
Zurück