Ganz einfacher Countdown mit php Quelle

Waleb

Grünschnabel
Hallo,

ich suche einen ganz einfachen Countdown, der die Sekundenanzahl die in einer php Datei gespeichert ist runterzählt im Format "XX Stunden XX Minuten und XX Sekunden".

Ich hab schon gesucht, aber quasi alle die ich gefunden habe hatten noch irgendwelche unnützen Zusatzfunktionen.

Hoffe ihr könnt mir weiterhelfen.
 
Hi,

im folgenden Script werden die Sekunden zu Beginn zugewiesen. Das kann wie im Beispiel
auch mit PHP erfolgen. Das Auslesen der Sekundenanzahl aus einer Datei überlasse ich dir.
Code:
// Sekunden mit PHP initialisiert
var lngSekunden = <?php echo("7359"); ?>;

function secondCount(){
  // Stunden berechnen
  intStunden = Math.floor(lngSekunden/(60*60));
  // Stunden formatieren
  intStunden = (intStunden < 10) ? "0"+intStunden : intStunden;
  // Restsekunden berechnen
  lngHelpSekunden = lngSekunden - intStunden*60*60;

  // Minuten berechnen, formatieren und Restsekunden berechnen
  intMinuten = Math.floor(lngHelpSekunden/60);
  intMinuten = (intMinuten < 10) ? "0"+intMinuten : intMinuten;
  intSekunden = lngHelpSekunden - intMinuten*60;

  // Sekunden formatieren
  intSekunden = (intSekunden < 10) ? "0"+intSekunden : intSekunden;

  // Ausgabestring generieren
  strZeit = intStunden + ":" + intMinuten + ":" + intSekunden;

  // Ausgabestring in DIV mit ID="countdownID" schreiben
  document.getElementById("countdownID").innerHTML = strZeit;

  // Sekunden dekrementieren
  lngSekunden--;
  // Falls der Countdown noch nicht zurückgezählt ist
  if(lngSekunden >= 0)
    // Countdown-Funktion erneut aufrufen
    window.setTimeout("secondCount()", 1000);
}
Aufgerufen werden kann der Countdown zum Beispiel im onload-Event des BODYs.

Beispiel:
HTML:
<body onload="secondCount();">
  <div id="countdownID"></div>
</body>
Ich hoffe, das hilft dir weiter.

Ciao
Quaese
 
Hallo
Ich bin über die Suche auf diesen Thread gestossen, der Countdown funktioniert. Die Anzahl Sekunden aus einer Datenbank herauszuholen sollte mir auch möglich sein.
Nun mein Problem: Wie kann ich, nachdem der Countdown bei 0 angelangt, ein neues Script ausführen.
Also konkret es geht um ein Browsergame: Nachdem der Countdown bei 0 ist, sollen die Daten in der Datenbank aktualisiert werden. Wie mach ich das?
danke und gruss
 
Hi,

füge am Ende der Funktion an die if-Bedingung einen else-Zweig an, in dem du das gewünschte
Script aufrufst.
Code:
function secondCount(){

  // ... Bisherige Funktion ...

  // Falls der Countdown noch nicht zurückgezählt ist
  if(lngSekunden >= 0)
    // Countdown-Funktion erneut aufrufen
    window.setTimeout("secondCount()", 1000);
  else
    // Script zum Aktualisieren der Datenbank
    // z.B. top.frames["frameTest"].location.href = "refresh_db.php";
}
Du könntest zum Beispiel ein Dokument in einem versteckten iFrame (frameTest) aufrufen,
in dem du die Datenbank aktualisierst.

Ciao
Quaese
 
du bracuhst nichmal einen iframe... rufe die selbe datei auf, und mache in den link ein ?action=aktu&building=lala&...

und dann ganz oben ein
if($action=="aktu")
bla bla, aktualisierung
 
Quaese hat gesagt.:
Hi,

im folgenden Script werden die Sekunden zu Beginn zugewiesen. Das kann wie im Beispiel
auch mit PHP erfolgen. Das Auslesen der Sekundenanzahl aus einer Datei überlasse ich dir.
Code:
 // Sekunden mit PHP initialisiert
 var lngSekunden = <?php echo("7359"); ?>;

Das verstehe ich nicht, was muss ich da hin schreiben wenn ich die Zeit in einer Vaiablen stehen habe? Warum echo?

Quaese hat gesagt.:
HTML:
  <body onload="secondCount();">
    <div id="countdownID"></div>
  </body>

Den Teil verstehe ich auch nicht, wie gebe ich den Countdown dann aus?

Sry, habe keinerlei Erfahrung mit Javascript.
 
Hi,

mit echo gibst du den Wert mit PHP aus. Dieser wird serverseitig ins Dokument geschrieben
und steht auf dem Client im JavaScript zur Verfügung.

Solltest du eine PHP-Variable ausgeben wollen, kannst Du das auch mit echo ausgeben.
Code:
 // Sekunden mit PHP initialisiert
 var lngSekunden = <?php echo($intSekunden); ?>;
Der Wert wird mit
Code:
  // Ausgabestring in DIV mit ID="countdownID" schreiben
  document.getElementById("countdownID").innerHTML = strZeit;
im Script im DIV-Container mit der ID countdownID ausgegeben.

Ich hoffe, deine Fragen sind hiermit beantwortet.

Ciao
Quaese
 
Sry wenn ich mich etwas blöd anstelle, aber ich kapiere noch nicht ganz wie ich den Countdown nun ausgebe.

Code:
	?>
  //// JAVASCRIPT ////////////////////////////////////
  <script language="javascript">
  	// Sekunden mit PHP initialisiert
  var lngSekunden = <?php echo($restzeit); ?>;
  
  function secondCount(){
    // Stunden berechnen
    intStunden = Math.floor(lngSekunden/(60*60));
    // Stunden formatieren
    intStunden = (intStunden < 10) ? "0"+intStunden : intStunden;
    // Restsekunden berechnen
    lngHelpSekunden = lngSekunden - intStunden*60*60;
  
    // Minuten berechnen, formatieren und Restsekunden berechnen
    intMinuten = Math.floor(lngHelpSekunden/60);
    intMinuten = (intMinuten < 10) ? "0"+intMinuten : intMinuten;
    intSekunden = lngHelpSekunden - intMinuten*60;
  
    // Sekunden formatieren
    intSekunden = (intSekunden < 10) ? "0"+intSekunden : intSekunden;
  
    // Ausgabestring generieren
    strZeit = intStunden + ":" + intMinuten + ":" + intSekunden;
  
    // Ausgabestring in DIV mit ID="countdownID" schreiben
    document.getElementById("countdownID").innerHTML = strZeit;
  
    // Sekunden dekrementieren
    lngSekunden--;
    // Falls der Countdown noch nicht zurückgezählt ist
    if(lngSekunden >= 0)
  	// Countdown-Funktion erneut aufrufen
  	window.setTimeout("secondCount()", 1000);
  }
  <div id="countdownID"></div>
  </script>
  <?php

So habe ich den eingebunden, aber es wird nichts angezeigt.
 
window.onload=secondCount <-- Muss noch in die <script>-tags

<div id="countdownID"></div> <-- Muss außerhalb der <script>-tags stehen

Sonst ist es richtig
 
//// JAVASCRIPT ////////////////////////////////////
?>

<script language="javascript" window.onload=secondCount>
// Sekunden mit PHP initialisiert
var lngSekunden = <?php echo($restzeit); ?>;

function secondCount(){
// Stunden berechnen
intStunden = Math.floor(lngSekunden/(60*60));
// Stunden formatieren
intStunden = (intStunden < 10) ? "0"+intStunden : intStunden;
// Restsekunden berechnen
lngHelpSekunden = lngSekunden - intStunden*60*60;

// Minuten berechnen, formatieren und Restsekunden berechnen
intMinuten = Math.floor(lngHelpSekunden/60);
intMinuten = (intMinuten < 10) ? "0"+intMinuten : intMinuten;
intSekunden = lngHelpSekunden - intMinuten*60;

// Sekunden formatieren
intSekunden = (intSekunden < 10) ? "0"+intSekunden : intSekunden;

// Ausgabestring generieren
strZeit = intStunden + ":" + intMinuten + ":" + intSekunden;

// Ausgabestring in DIV mit ID="countdownID" schreiben
document.getElementById("countdownID").innerHTML = strZeit;

// Sekunden dekrementieren
lngSekunden--;
// Falls der Countdown noch nicht zurückgezählt ist
if(lngSekunden >= 0)
// Countdown-Funktion erneut aufrufen
window.setTimeout("secondCount()", 1000);
}
</script>
<?php
echo '<div id="countdownID"></div>';

es wird immer noch nichts angezeigt. Kann es sein das noch was ins body tag muss?
 

Neue Beiträge

Zurück