Ganz einfacher Countdown mit php Quelle

Es gibt zwei Möglichkeiten. Entweder du schreibst onload="secondCount" in den Bodytag:
HTML:
<html><head>
       ...
       </head>
       <body onload="secondCount"> 
       ...
       </body></html>

Oder du schreibst die Zeile von oben (window.onload = secondCount;) in das Script selbst.
Du hast es fälschlicherweise in den ersten <script>-Tag geschrieben. Ich hatte mich da wohl etwas missverständlich ausgedrückt, aber ich nahm an du hättest wenigstens etwas Ahnung von JS. Also so wäre es richtig:
PHP:
         <script type="text/javascript">
    window.onload=secondCount;
   
   // Sekunden mit PHP initialisiert
   var lngSekunden = <?php echo($restzeit); ?>;
   
   function secondCount(){ 
   	intStunden = Math.floor(lngSekunden/(60*60));
   	intStunden = (intStunden < 10) ? "0"+intStunden : intStunden;
   	lngHelpSekunden = lngSekunden - intStunden*60*60;
   	intMinuten = Math.floor(lngHelpSekunden/60);
   	intMinuten = (intMinuten < 10) ? "0"+intMinuten : intMinuten;
   	intSekunden = lngHelpSekunden - intMinuten*60;
   	intSekunden = (intSekunden < 10) ? "0"+intSekunden : intSekunden;
  
   	strZeit = intStunden + ":" + intMinuten + ":" + intSekunden;
  
 	  document.getElementById("countdownID").innerHTML = strZeit;
  
  	lngSekunden--;
 
  	if(lngSekunden >= 0) window.setTimeout("secondCount()", 1000);
  }
  </script>
  
  <div id="countdownID"></div>
Hab im Beispiel mal die lästigen Kommentare weggelassen...
 
Zuletzt bearbeitet:
Geht es auch mehrere von dem Countdown auf eine Seite zu bringen, ich krieg das irgendwie nicht hin, hab schon alles mögliche umbenannt =/

mfg dark
 
Hallöchen zusammen

Entschuldigt, dass ich dieses Thema wieder aufrolle. aber habe bis jetzt leider nichts passendes gefunden.

Das Script das gepostet wurde funktioniert einwandfrei... Nur möchten ich nun wissen, wie ich es am besten fertig bringe einen Befehl absetzen kann, um Werte in eine Datenbank zu schreiben, nachdem der Counter abgelaufen ist.

Mit einem PHP Befehl, den ich direkt in die else Anweisung geschrieben habe, scheint es irgendwie nicht zu klappen. Denke das ist so auch nicht mir PHP realisierbar, da die Seite neugeladen werden müsste.

Könnte mir jemand einen Tipp gebe, wie ich diesen Befehl am Besten absetze?

Vielen Dank im Voraus

Gruss
 
Hi,

in Antwort #4 wurde eine Möglichkeit vorgestellt - über einen iFrame. Eine weitere Möglichkeit wäre das Aufrufen einer Ajax-Funktion, die die Kommunikation mit dem Server übernimmt und somit die Aktualisierung der Datenbank anstösst.

Ciao
Quaese
 
Hallo, auch ich möchte / muss das Thema noch einmal aufgreifen. Ich habe keine Ahnung von JS und lerne gerade PHP.

Ich habe wirklich ewig nach einen Counter dieser art gesucht und dieser funktioniert super,nun aber meine Frage.


Ich habe mehr als eine Variable mit zeitangaben:

PHP:
$zeit1 = 120;
$zeit2 = 90;

selbst wenn ich im JS bereich nur eine Variable habe...

Code:
var lngSekunden = <?php echo $zeit2; ?>;

... und im html dieses Div 2 mal habe ist aber nur einer vorhanden

HTML:
<div id="countdownID"></div>

Ich muss das JS also mit mehreren Variablen füttern können und im html auch wieder ausgeben können.
Ich hoffe man versteht alles und mir kann/mag jemand helfen. Danke
 
Hi,

eine ID muss innerhalb eines Dokuments eindeutig sein. Aus diesem Grund bringt es dir auch nichts, wenn du das DIV mit der gleichen ID häufiger in das Dokument einfügst.

Als Lösung müssten DIVs mit unterschiedlichen IDs existieren. Das Script müsste selbstverständlich angepasst werden.

Hier eine Möglichkeit:
Code:
<html>
<head>
<title>www.tutorials.de</title>
<meta name="author" content="Quaese">
<script type="text/javascript">
// Timerobjekt mit PHP initialisiert
var objTimer = {
        'countdownID_01': {
            lngSekunden: <?php echo("7359"); ?>
        },
        'countdownID_02': {
            lngSekunden: <?php echo("5000"); ?>
        }
    };

function secondCount(id){
    var lngSekunden = objTimer[id].lngSekunden,
        intStunden, lngHelpSekunden, intMinuten, intSekunden, strZeit;

    // 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 der übergebenen ID schreiben
    document.getElementById(id).innerHTML = strZeit;

    // Sekunden dekrementieren
    objTimer[id].lngSekunden = --lngSekunden;
    // Falls der Countdown noch nicht zurückgezählt ist
    if(lngSekunden >= 0){
        // Countdown-Funktion erneut aufrufen
        window.setTimeout(function(){
            secondCount(id)
        }, 1000);
    }

}

window.onload = function(){
    secondCount('countdownID_01');
    secondCount('countdownID_02');
}
</script>
</head>
<body>
  <div id="countdownID_01"></div>
  <div id="countdownID_02"></div>
</body>
</html>
Ciao
Quaese
 
Zurück