laufende Uhrzeit

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Benutzeravatar
TLoD
Mitglied
Beiträge: 161
Registriert: 04.08.2007 14:57
Wohnort: Nürnberg
Kontaktdaten:

Beitrag von TLoD »

Ich glaube wir reden aktuell über das falsche JS.
Ich poste mal noch mal den ganzen Code.

Code: Alles auswählen

<html>
<head>
<?php

// Lese letzten Scan aus
                $sql = "SELECT Datum
                                FROM ".SCANLOGS."
                                ORDER BY Datum DESC;";
                $result = mysql_query($sql) OR die(mysql_error());
                $row = mysql_fetch_assoc($result);
                // nur den ersten (also letzten Eintrag) auslesen
                $date = $row['Datum'];
                $ZeitE = getNextScan($date);

$timestamp = ($ZeitE);

$testausgabe = date("F, j Y H:i:s",$timestamp);

?>
<script language="JavaScript">
var end = new Date("<?PHP echo $testausgabe; ?>");
function toSt2(n) {
  s = "";
  if (n < 10) s += "0";
  return (s + n).toString();
}
function toSt3(n) {
  s = "";
  if (n < 10) s += "00";
  else if (n < 100) s += "0";
  return (s + n).toString();
}
function countdown() {
  d = new Date();
  count = Math.floor(end.getTime() - d.getTime());
  if(count > 0) {
    miliseconds = toSt3(count%1000); count = Math.floor(count/1000);
    seconds = toSt2(count%60); count = Math.floor(count/60);
    minutes = toSt2(count%60); count = Math.floor(count/60);
    hours = toSt2(count%24); count = Math.floor(count/24);
    days = count;
    document.getElementById("c1").innerHTML = hours + ":" + minutes + ":" + seconds
    setTimeout("countdown()", 50);
  }
else
{
    document.getElementById("c1").style.color = "#00FF00";
    document.getElementById("c1").innerHTML = "00:00:00";
    document.getElementById("c1").innerHTML = "jetzt";
}
}
window.onload = function(){
  countdown();
}

</script>
</head>
</html>
Das ist der gesamte Code, für mein Counter JS.
Das Auslesen der DB habe ich mal vernachlässigt und den Timestamp gleich in die $timestamp gepackt.

Dann habe ich folgenden Code in die index.php gepackt.

Code: Alles auswählen

$timestamp = (1226098800);

$testausgabe = date("F, j Y H:i:s",$timestamp);
Und in die overall_header.tpl habe ich dann das komplette JS gepackt.

Code: Alles auswählen

<script language="JavaScript">
var end = new Date("<?PHP echo $testausgabe; ?>");
function toSt2(n) {
  s = "";
  if (n < 10) s += "0";
  return (s + n).toString();
}
function toSt3(n) {
  s = "";
  if (n < 10) s += "00";
  else if (n < 100) s += "0";
  return (s + n).toString();
}
function countdown() {
  d = new Date();
  count = Math.floor(end.getTime() - d.getTime());
  if(count > 0) {
    miliseconds = toSt3(count%1000); count = Math.floor(count/1000);
    seconds = toSt2(count%60); count = Math.floor(count/60);
    minutes = toSt2(count%60); count = Math.floor(count/60);
    hours = toSt2(count%24); count = Math.floor(count/24);
    days = count;
    document.getElementById("c1").innerHTML = hours + ":" + minutes + ":" + seconds
    setTimeout("countdown()", 50);
  }
else
{
    document.getElementById("c1").style.color = "#00FF00";
    document.getElementById("c1").innerHTML = "00:00:00";
    document.getElementById("c1").innerHTML = "jetzt";
}
}
window.onload = function(){
  countdown();
}

</script>
Mein Problem an der Sache ist nun, das der Counter nur dann funktioniert, wenn ich mich auf der index.php befinde, jedoch auf allen anderen Seiten nicht. Deswegen wollte ich nun den oberen Teil in die function.php packen, da er ja dann auf allen Seiten verfügbar ist.

Nun weiß ich aber nicht, wie ich das anstellen soll.

Als erstes hatte ich in dem JS die Zeile von:

Code: Alles auswählen

var end = new Date("<?PHP echo $testausgabe; ?>");
nach

Code: Alles auswählen

var end = new Date('{timestampcounter}');;
geändert und in der functions.php, dafür folgende Zeile eingefügt.

Code: Alles auswählen

$template->assign_vars(array('timestampcounter' => $testausgabe));


Denke soweit funzt das auch alles, nur wie bekomme ich nun in die

Code: Alles auswählen

{timestampcounter}
diese Informationen

Code: Alles auswählen

$timestamp = (1226098800);

$testausgabe = date("F, j Y H:i:s",$timestamp);
Denke wenn ich das Problem löse, dann sollte es funzen.
Ich werde heute mal noch die SQL Abfrage in die functions.php einbauen und dann als letztes die definition für {timestampcounter} evtl. habe ich ja so mehr Glück. Bitte jetzt nicht Steinigen ;)
LG Marc

Wir leben alle unter dem gleichen Himmel, aber wir haben nicht alle den gleichen Horizont.
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag von Miriam »

Finde in der includes/functions.php

Code: Alles auswählen

	// The following assigns all _common_ variables that may be used at any point in a template.
davor füge ein:

Code: Alles auswählen

// Lese letzten Scan aus
                $sql = "SELECT Datum
                                FROM ".SCANLOGS."
                                ORDER BY Datum DESC;";
                $result = mysql_query($sql) OR die(mysql_error());
                $row = mysql_fetch_assoc($result);
                // nur den ersten (also letzten Eintrag) auslesen
                $date = $row['Datum'];
                $ZeitE = getNextScan($date);

$timestamp = (date("F, j Y H:i:s",$ZeitE);
danach füge ein:

Code: Alles auswählen

	$template->assign_vars(array(
		'TIMESTAMP_COUNTER'				=> date("F, j Y H:i:s",$timestamp),
Und so sollte

Code: Alles auswählen

{TIMESTAMP_COUNTER}
in allen Templates für Deine JS verfügbar sein.
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
TLoD
Mitglied
Beiträge: 161
Registriert: 04.08.2007 14:57
Wohnort: Nürnberg
Kontaktdaten:

Beitrag von TLoD »

Besten Dank! Ich werde es dann gleich mal testen.
Blöde Frage - aber wie wäre es ohne die SQL Abfrage gegangen?
Nur so aus Neugier ;)
LG Marc

Wir leben alle unter dem gleichen Himmel, aber wir haben nicht alle den gleichen Horizont.
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag von Miriam »

Garnicht.

Aber Du hättest es in die config-Tabelle schreiben können und dann wäre es die Variable

Code: Alles auswählen

$config['datum'] 
gewesen. Und eine SQL Query weniger.
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Antworten

Zurück zu „Coding & Technik“