Zeitcountdown mit PHP Variable

strex

Erfahrenes Mitglied
Hi liebe Community =),

ich habe folgendens Problem und da ich nicht so der Meister in Java bin und ausser ein paar Grundlagen nur PHP, MySQL und HTML kann frage ich jetzt euch.

Wäre nett wenn sich einer erbarmen würde! ;)


Also eine PHP Script sucht mir aus einer MySQL Tabelle einen bestimmten Zeitwert. Fertig formatiert gibt das Script über smarty folgendes aus "h:min:sec". Zum Beispiel bei 12 Stunden, 3 Minuten und 7 Sekunden folgenden Wert aus "12:03:07" aus. Dies möchte ich nun, dass es als Countdown auf null abläuft also bis "00:00:00" und dann dort "Angekommen" angezeigt wird.

Könnte mir das einer vielleicht realieseren, denn ich komm da wirklich nicht weiter. :confused:

Danke schön!

strex

edit:// Variable: {$trans.str_time}
 
Zuletzt bearbeitet:
strex hat gesagt.:
...da ich nicht so der Meister in Java bin...
Musst du ja auch nicht, du musst nur Javascript koennen. ;)
Es ist zwar nur eine Kleinigkeit, aber Javascript hat so wenig mit Java zu tun, wie Hautkrebs mit dem Krustentier. Java ist eine vollwertige Programmiersprache, waehrend Javascript nur ein kleines Browser-Gimmick ist. Jeder Java-Programmierer fuehlt ich auf den Schlipps getreten, wenn du seine Programmiersprache mit einem Spielzeug vergleichst, auch wenn du's nur unwillkuerlich tust.

strex hat gesagt.:
Könnte mir das einer vielleicht realieseren, denn...
Auf so einen Satz reagiere ich immer allgerisch [sic].
Wenn du wenigstens schomal die Forensuche benutzt haettest, nach "Countdown" gesucht haettest und das was du da gefunden hast versucht haettest zu verstehen und anzupassen...
So macht das sehr den Eindruck als waerest du zu faul und jemand anders soll die Arbeit fuer dich machen. Darum such und versuch es erst selbst. Wenn es Probleme gibt poste deinen Code, ggf. die Fehlermeldung und wir helfen dir gerne bei deinem konkreten Problem aber ein "macht mal, ich lehn' mich derweil zurueck und schau' Morgen nochmal rein" ist einfach inakzeptabel besonders, wo es doch zig Countdownthreads hier gibt (die meisten von mir beantwortet) und ich mich ungern wiederhole.

Hier: http://confus.co.funpic.de/_data/tut/ findest du vielleicht etwas Inspiration. Bitte keine Scheu in den Quelltext zu schauen und ggf. bei selhtml nachschlagen, wenn dir etwas schwierigkeiten macht, bevor du mit Fragen kommst. Nochmal du kannst gerne fragen, aber du musst auch zumindest ein Midestmas an Eigeninititive zeigen.
 
Zuletzt bearbeitet:
Tut mir leid, dass ich vielleicht manchen auf den Schlipps getreten bin! Ok, dann poste ich hier mal meinen Versuch.

Hier die HTML ausgabe des Countdowns:
Code:
<div id="bx" class="z">{$trans.str_time}</div>

Hier das Javascript, das folgt am ein paar Zeilen weiter unter:

<script type="text/javascript">
v=new Date();
var bx=document.getElementById('bx');

function t()
{
n=new Date();
s={/literal}{$trans.str_time}{literal}-Math.round((n.getTime()-v.getTime())/1000.);
m=0;
h=0;
if(s<0)
{
bx.innerHTML="Angekommen"
}
else
{
if(s>59)
{
m=Math.floor(s/60);
s=s-m*60;
}
if(m>59)
{
h=Math.floor(m/60);
m=m-h*60;
}
if(s<10)
{
s="0"+s
}
if(m<10)
{
m="0"+m
}
bx.innerHTML=h+":"+m+":"+s";
}
window.setTimeout("t();",999)
}
window.onload=t;
</script>
 
Ich nehme alles zurueck, was ich vielleicht ueber dich betreffs Faulheit vielleicht gedacht habe.

Das Script sieht eigentlich schonmal ganz gut aus, auch wenn ich es nicht auf Herz und nieren geprueft habe. bx.innerHtml funktioniert allerdings nicht in allen Browsern - da nimmst du besser document.getElementById('bx').innerHTML
Was gibt es denn fuer eine Fehlermeldung in der Javascript-Konsole deines Browsers? In welchem Format ist der Wert der Variable "$trans.str_time"?
 
Zuletzt bearbeitet:
Also die Variable wird so ausgeben. Beispiel 2 Stunden, 4 Minuten und 3 Sekunden, dann sieht die Variable wie folgt aus "02:04:03". Browser zeigt mir einen Fehler in Zeile 134 Zeichen 9 obwohl dort keine Javascript oder ähnliches ist.

Zeit zeigt es zwar an, diese läuft aber nicht herunter auf null.
 
Da waere schonmal ein Fehler - so wie es da steht muss die Variable einen Wert haben, der eine Zahl ist. Also nicht "10:12:58" sondern "15178" haben, sonst kann man ja nicht "Math.round((n.getTime()-v.getTime())/1000)" davon abziehen.
 
Gut danke erst mal soweit. Das habe ich nun hinbekommen. Nun habe ich aber ein weiteres Problem.

Also hab ich verschiedene Wert (Uhrzeit), die auf 0 herrunterlaufen soll.

Das sieht dann so aus:

Gebäude xyz in 12min
Gebäude xyz2 in 14min

Alle Zeiten werden durch die gleiche Variable ausgegeben. Und mit foreach angezeigt. Wie bekomme ich dies nun so hin, dass in allen Tasks die Uhrzeit herrunterläuft.

strex
 
Ah ok danke...hab´s hinbekommen mit deinem Beispiel.

Script oben angefügt:
Code:
<script type="text/javascript" src="ticker.js"></script>

Dann in die Foreach Schleife:

Code:
{foreach from=$transferlist item=trans}
        <tr>
          <th width="2" class="tlightgreen">*</th>

          <th width="242" class="tlightgreen">{$trans.msg}</th>

          <th class="tlightgreen">in <script type="text/javascript"><!-- 
			countdown({$trans.str_time},'alert("Angekommen")')
		//--></script></th>
        </tr>
{/foreach}

Nur ne Frage, wie mache es nun, dass er wenn es nach unten gezählt statt urzeit dann "Angekommen" steht?
 
Sollte eigentlich so gehen:
Code:
<script type="text/javascript">
      	countdown(
     		{$trans.str_time},
 		'document.getElementById("count_"+strTgt).firstChild.data="Angekommen!"'
       	)
 //--></script>
Das alert() hab ich rausgenommen, weil der Alert immer alles auf der Seite anhält, also auch eventuelle Countdowns, die eigentlich weiter laufen sollten.

Noch einen Bitte, wenn du den Countdown von meiner Seite dann tatsächlich benutzt, dann lass bitte den Kommentar mit "coded by..." drin und dann kannst du auch gleich dieses Thema als "erledigt" markieren. Danke!
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück