[PHP] Habe ein Problem mit einem Countdown ;)

Brian93

Well-known member
30 September 2006
378
21
Hey, ich suche einen Countdown mit PHP, der wenn er bei 0 Tage 0 Stunden 0 Minuten und 0 Sekunden angekommen ist aufhört zu zählen ( also nicht in den Minusbereich geht ), da ich ein If Phrase machen will ( wenn der Countdown auf 0 ist soll ein quelltext in kraft setzen ).

Denn wenn der Countdown in den Minusbereich geht, tritt das IF nur 1 Sekunde in Kraft.. Außerdem würde es blöd aussehen wenn der Countdown im Minusbereich ist ;) !

Ich hoffe mir kann jemand helfen, ich habe hier meinen zurzeitigen Countdown :

<?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 $Rest Sekunden";
return($Zeit);
}
$Datum = "29.03.2007 00:00:00"; // Das Datum das erreicht werden soll
echo Countdown($Datum);

?>

Achja und eine kleine Frage hätte ich noch. Wie kann ich in so ein If Kram mehrere Bedingungen einfügen z.B.
wenn
Tage Stunden Minuten ... auf 0 sind dann ...

Geht das einfach so :

if($beispiel1 && $beispiel2 == "0"
{
echo "..."
}

Oder wie ?


Würde mich über eine Antwort freuen !

Vielen Dank im Vorraus :)


MfG
 
Moin,

du kannst für die mehreren Bedingungen in den If-Anweisungen auch ein Switch/Case nehmen. Guckst du hier:

switch (Ausdruck)
{
case wert1:
//wenn Ausdruck = wert1 wird dieser Code ausgeführt
break ;
case wert2:
//wenn Ausdruck = wert2
break;
default:
//wenn keiner von beiden Werten zutrifft,
//wird dieser Code ausgeführt
};

oder du verknüpfst die in der If-Anweisung durch ein Und. Guckst du hier:

if (Bedingung1 == 0 && Bedingung 2 != 0 )
{
echo $variable;
};

Greetz
 
Wenn du das Event bei Timer=0 nur einmal triggern willst, solltest du irgendwo abspeichern, ob der Counter schon einmal drunter war.

Schematisch also so:
PHP:
// Pseudocode

if($counter>0)
{
  $counter=$counter->dekrementieren();
}
else // ($counter<=0)
{
  $counter=0; // für die Ausgabe
  $datei=datei_öffnen();
  if($datei->inhalt()==0)
  {
    $datei->schreibe(1);
    trigger_event();
  }
  else // (Event wurde schon getriggert)
    nothing();
}
Wie kann ich in so ein If Kram mehrere Bedingungen einfügen z.B.
Das is quatsch, weil bei $beispiel1 der Vergleichsoperator fehlt. Geh mal weg von der deutschen Sprache, du willst PHP programmieren.

Deutsch: $x und $y gleich 1
PHP: $x==1 && $y==1

Achtung: Dein Code erzeugt keinen Syntaxfehler, macht aber nicht das, was du willst, da kein Vergleich immer "ungleich 0" bedeutet.
 
Mal neugierig in die Runde gefragt:

Wozu brauchst du in PHP einen Counter der über Tage geht?

Im Allgemeinen wird PHP nur auf Webservern eingesetzt und das Script läuft nur so lange wie benötigt wird, um die Seite aufzubauen (das sollte eigentlich im bereich von Zehntelsekunden liegen).

Wenn dein Script tatsächlich Tage abarbeiten soll, muß es die ganze Zeit im Hintergrund laufen. vergleiche doch lieber bei jedem AUfruf der Seite den Startzeitpunkt des Counters (in DB oder Textdatei auf dem Server abgelegt)
und berechne dann die Differenz. Falls du, während die Seite geöffnet ist, etwas ändern willst, schaue in die Richtung JavaScript/Ajax.

Sorry- sowas in die Richtung machst du eigentlich auch, habe deinene Quelltext ebend zu flüchtig überflogen.