Ich hoffe es stört niemanden, dass ich noch ein Thema aufmache, aber ich komme in diesem Punkt nicht weiter und da es in Winfuture viele schlaue Köpfe gibt dachte ich das ich vielleicht hier Hilfe erhalten könne.
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
Seite 1 von 1
Php Countdown Erstellen
Anzeige
#2
geschrieben 17. April 2009 - 14:42
Das geht mit (nur) PHP nicht.
Nutz Javascript.
setTimeout() wird dir helfen.
Nutz Javascript.
setTimeout() wird dir helfen.
#3
geschrieben 17. April 2009 - 15:16
ok... ich muss aber mit php auslesen aus der mysql datenbank das ist ja klar, ich arbeite aber nicht wirklich viel mit java desshalb hast du eine spezifische idee?
#4
geschrieben 17. April 2009 - 15:22
Javascript hat mit Java nichts zu tun.
Codebeispiel, das 2x pro Sekunde die aktuelle Zeit in ein <div id="countdown"> schreibt:
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:
Klar so weit?
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
ja danke hat mir sehr geholfen
Und wie counte ich das jetzt runter?
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
Normale Rechenoperationen gehen in JS auch... Minus zum Beispiel.
#7
geschrieben 17. April 2009 - 17:28
aber ich habe keine ahnung wie das eghen soll, weil jetzt wird die Zeit genommen, die an gerade auf dem server hat, das ist ja etwas ganz anderes?
#8
geschrieben 17. April 2009 - 18:37
Wenn du stattdessen einen festen Wert (aus PHP) willst, änderste die innerHTML-Zeile wie folgt:
In $restzeit steht dann immer die aktuelle Restzeit usw...
document.getElementById("countdown").innerHTML = "<?php echo $restzeit; ?>";
In $restzeit steht dann immer die aktuelle Restzeit usw...
#9
geschrieben 17. April 2009 - 18:41
ja das ist mir klar, aber ich will ja: mit php lese ich das aus dann liest das java script die differenz zwischen jetzt und dem ende des countdowns aus und gibt das dann aus, also wieviel zeit noch verbleibt bis dann und dann
Dieser Beitrag wurde von Janson bearbeitet: 17. April 2009 - 18:41
#10
geschrieben 17. April 2009 - 18:55
Dann gib den Zielzeitpunkt doch als UTC an und zieh den aktuellen Zeitpunkt als UTC ab?
Umwandeln kann Javascript dann auch.
Umwandeln kann Javascript dann auch.
#11
geschrieben 17. April 2009 - 21:12
Schau mal,
so bekommst du die einzelnen Zeitsegmente in PHP fuer eine gewisse Zeitspanne:
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:
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.
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
PERFEKT!!! Das ist genau das nachdem ich gesucht habe ... Danke Danke =D
Thema verteilen:
Seite 1 von 1