Countdown/Timer - Problem

Nexonomia

Grünschnabel
Hy Leute,

sitz nun schon seit einigen Tagen an einem Problem, welches ich bisher nicht gelöst bekommen habe.

Es geht um folgendes: Bei mir kann man sich registrieren, einloggen, kein problem. Alles wird auch fein in die Mysql-Datenbank eingetragen. Wenn ein $User nun aber eine Aktion ausführt, die zb 20 min dauert, möchte ich, dass diese Zeit auf dem Bildschirm ausgegeben, als Countdown.

Habe mir schon ein paar Countdown Codes angeschaut, das ist ja ok, nur hab ich das problem, dass, wenn ich die $dauer in die Datenbank speicher, er diese jedesmal bei einem "Neu Laden" der Seite wieder diese (zb) 20 mins dauert.

Das funktioniert so nicht, also wollte ich jetzt das ende der Aktion per NOW() funktion in die Datenbank (als DateTime) speichern. Das funktioniert bestens. Nur, wie les ich die Zeit wieder raus und lass es als Countdown laufen?

Wäre super, wenn jemand weiss, wie und es reichen mir Anhaltspunkte.
Zb. mit welcher Funktion das am besten machbar ist. Oder ne ganz andere Methode.

Ich bedanke mich schonmal im vorraus für alle Beitäge.


Mfg Noxen
 
Ich kenne deinen Countdown Code nicht, aber der Konstruktor für die Date-Klasse in JavaScript akzeptiert als Parameter die Zahl der Millisekunden seit dem 01.01.1970 (unix timestamp). Also ließ es in MySQL einfach in der Form aus.
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_unix-timestamp
http://www.w3schools.com/jsref/jsref_obj_date.asp

Oder falls dein Countdown Code kein Date Objekt braucht, sondern nur die Zahl der verbleibenden Sekunden, dann müsste das hier funktionieren.

SQL:
SELECT UNIX_TIMESTAMP() - UNIX_TIMESTAMP(end_date) FROM foo;
 
Zuletzt bearbeitet:
Ich habe noch keinen, das ist ja im Prinzip das Problem.

Wenn ein User eine Aktion für zb 20 mins ausführt, soll er angezeigt bekommen, sollte aber eben weiterlaufen, wenn er die seite zb neu läd. Also kann ich eigentlich nicht sonderlich viel mit PHP anfangen.

Dachte mir mittlerweile, mit Javascript sollte sowas eigentlich auch möglich sein, oder?
 
Achso, ich dachte dein Problem wäre, dass der Countdown immer wieder neu beginnt.

Mit der Abfrage die ich gepostet habe, erhältst du die Sekunden, die noch verleiben. Ein Countdown könnte dann so aussehen:

HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
	<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
	
	<title>Countdown</title>
</head>

<body>
	<div id="out"></div>
	
	<script type="text/javascript">
	/* <![CDATA[ */
	var out = document.getElementById('out');
	var seconds = 10;//Hier der Wert von der Abfrage
	
	out.innerHTML = seconds;
	
	var timer = window.setInterval(function() {
		if(--seconds <= 0) {
			window.clearInterval(timer);
			out.innerHTML = 0;
		}
		
		out.innerHTML = seconds;
	}, 1000);
	/* ]]> */
	</script>
</body>

</html>
 

Neue Beiträge

Zurück