WinFuture-Forum.de: Php Countdown Erstellen - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Php Countdown Erstellen


#1 Mitglied ist offline   Janson 

  • Gruppe: aktive Mitglieder
  • Beiträge: 118
  • Beigetreten: 21. September 08
  • Reputation: 0

geschrieben 17. April 2009 - 14:26

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
0

Anzeige



#2 Mitglied ist offline   W@yne 

  • Gruppe: aktive Mitglieder
  • Beiträge: 889
  • Beigetreten: 20. Juli 05
  • Reputation: 0

geschrieben 17. April 2009 - 14:42

Das geht mit (nur) PHP nicht.
Nutz Javascript.

setTimeout() wird dir helfen.
0

#3 Mitglied ist offline   Janson 

  • Gruppe: aktive Mitglieder
  • Beiträge: 118
  • Beigetreten: 21. September 08
  • Reputation: 0

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?
0

#4 Mitglied ist offline   W@yne 

  • Gruppe: aktive Mitglieder
  • Beiträge: 889
  • Beigetreten: 20. Juli 05
  • Reputation: 0

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:

...

<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?
0

#5 Mitglied ist offline   Janson 

  • Gruppe: aktive Mitglieder
  • Beiträge: 118
  • Beigetreten: 21. September 08
  • Reputation: 0

geschrieben 17. April 2009 - 15:27

ja danke hat mir sehr geholfen :(

Und wie counte ich das jetzt runter?

Dieser Beitrag wurde von Janson bearbeitet: 17. April 2009 - 15:33

0

#6 Mitglied ist offline   W@yne 

  • Gruppe: aktive Mitglieder
  • Beiträge: 889
  • Beigetreten: 20. Juli 05
  • Reputation: 0

geschrieben 17. April 2009 - 16:24

Normale Rechenoperationen gehen in JS auch... Minus zum Beispiel. :(
0

#7 Mitglied ist offline   Janson 

  • Gruppe: aktive Mitglieder
  • Beiträge: 118
  • Beigetreten: 21. September 08
  • Reputation: 0

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?
0

#8 Mitglied ist offline   W@yne 

  • Gruppe: aktive Mitglieder
  • Beiträge: 889
  • Beigetreten: 20. Juli 05
  • Reputation: 0

geschrieben 17. April 2009 - 18:37

Wenn du stattdessen einen festen Wert (aus PHP) willst, änderste die innerHTML-Zeile wie folgt:
document.getElementById("countdown").innerHTML = "<?php echo $restzeit; ?>";


In $restzeit steht dann immer die aktuelle Restzeit usw...
0

#9 Mitglied ist offline   Janson 

  • Gruppe: aktive Mitglieder
  • Beiträge: 118
  • Beigetreten: 21. September 08
  • Reputation: 0

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

0

#10 Mitglied ist offline   W@yne 

  • Gruppe: aktive Mitglieder
  • Beiträge: 889
  • Beigetreten: 20. Juli 05
  • Reputation: 0

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.
0

#11 Mitglied ist offline   aeris 

  • Gruppe: aktive Mitglieder
  • Beiträge: 129
  • Beigetreten: 06. September 08
  • Reputation: 12
  • Geschlecht:unbekannt

geschrieben 17. April 2009 - 21:12

Schau mal,
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.
0

#12 Mitglied ist offline   Janson 

  • Gruppe: aktive Mitglieder
  • Beiträge: 118
  • Beigetreten: 21. September 08
  • Reputation: 0

geschrieben 18. April 2009 - 19:49

PERFEKT!!! Das ist genau das nachdem ich gesucht habe ... Danke Danke =D
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0