Php Countdown Erstellen
#1
geschrieben 17. April 2009 - 14:26
Mein Problem:
Ich würde gerne ein Script verwenden, welches:
Einen Zeitpunkt aus einer MySQL Datenbank ausliest (kein problem=
Aber jetzt kommt der Hauptteil des Scriptes, es soll von der jetzigen Zeit in Form von Tage:Stunden:Minuten:Sekunden einen Countdown erstellen.
Also das es so aussieht ich gehe auf eine countdown.php und dann eben ein template welches das Script included und dann steht dort FETT in der Mitte:
ES DAUERT NOCH: 55:11:24:02 oder so ähnlich.
Mfg Janson
Anzeige
#2
geschrieben 17. April 2009 - 14:42
Nutz Javascript.
setTimeout() wird dir helfen.
#3
geschrieben 17. April 2009 - 15:16
#4
geschrieben 17. April 2009 - 15:22
Codebeispiel, das 2x pro Sekunde die aktuelle Zeit in ein <div id="countdown"> schreibt:
...
<script>
function FormatZeit(wert) {
if (wert < 10)
return "0" + wert;
else
return wert;
}
function UpdateCD() {
var heute = new Date();
var jetztAusgabe = FormatZeit(heute.getHours()) + ":" + FormatZeit(heute.getMinutes()) + ":" + FormatZeit(heute.getSeconds()) + " Uhr";
document.getElementById("countdown").innerHTML = jetztAusgabe;
}
window.setInterval("UpdateCD()", 500); // aktualisiert 2x pro Sekunde
</script>
...
Wer's nicht kann, möge es lernen:
http://de.selfhtml.org/javascript/objekte/...htm#set_timeout
http://de.selfhtml.o...bjekte/date.htm
In ein Javascript kannst du auch PHP-Variablen schreiben.
Beispiel:
window.setInterval("UpdateCD()", <?php echo $timeout; ?>);
Klar so weit?
#5
geschrieben 17. April 2009 - 15:27
Und wie counte ich das jetzt runter?
Dieser Beitrag wurde von Janson bearbeitet: 17. April 2009 - 15:33
#6
geschrieben 17. April 2009 - 16:24
#7
geschrieben 17. April 2009 - 17:28
#8
geschrieben 17. April 2009 - 18:37
document.getElementById("countdown").innerHTML = "<?php echo $restzeit; ?>";
In $restzeit steht dann immer die aktuelle Restzeit usw...
#9
geschrieben 17. April 2009 - 18:41
Dieser Beitrag wurde von Janson bearbeitet: 17. April 2009 - 18:41
#10
geschrieben 17. April 2009 - 18:55
Umwandeln kann Javascript dann auch.
#11
geschrieben 17. April 2009 - 21:12
so bekommst du die einzelnen Zeitsegmente in PHP fuer eine gewisse Zeitspanne:
<? //das Zieldatum $dateTarget = "18.4.2009 21:38"; //Zieldatum in einen Unix Timestamp umwandeln und von Jetzt abziehen. $dateTarget = strtotime($dateTarget); $dateNow = time(); $dateDiff = $dateTarget - $dateNow; //Restlichen Tage, Stunden etc.. ausrechnen $days = floor($dateDiff/(24*60*60)); $hours = floor(($dateDiff - ($days*60*60*24))/(60*60)); $minutes = floor(($dateDiff - ($days*60*60*24)-($hours*60*60))/60); $seconds = floor(($dateDiff - ($days*60*60*24)-($hours*60*60)-($minutes*60))); ?>
Wenn du diese dynamisch runterzaehlen willst brauchst du JavaScript, am einfachsten ist eine Funktion die sich ungefaehr jede Sekunde selbst neu aufruft und die Werte runterzaehlt.
Beispiel:
//var definiton hier nicht enthalten
function updateCountdown()
{
seconds = seconds - 1;
if(seconds < 0)
{
seconds = 59;
minutes = minutes - 1;
if(minutes < 0)
{
minutes = 59;
hours = hours - 1;
if(hours < 0)
{
hours = 23;
days = days - 1;
if(days < 0)
{
finished = true;
}
}
}
}
if(!finished)
{
document.getElementById('countdown').innerHTML = "<strong>ES DAUERT NOCH: " + days + " Tage, " + hours + " Stunden, " + minutes + " Minuten und " + seconds + " Sekunden</strong>";
setTimeout("updateCountdown()", 1000);
}
else
{
document.getElementById('countdown').innerHTML = "Ziel erreicht!";
}
Die Werte werden einzeln runtergezaehlt (etwas unschoen, aber egal ;) und in ein Div geschrieben.
Geht der Tag-Wert auf -1 ist das Zieldatum erreicht und eine andere Nachricht wird ins div geschrieben.
Beispiel wie man das ganze verwenden kann:
http://pastebay.com/9238
Kann sein das es bessere/schoenere Loesungen dafuer gibt, aber das hier sollte es auch tun.
#12
geschrieben 18. April 2009 - 19:49

Hilfe
Neues Thema
Antworten
Nach oben


