Seite 1 von 2

JS und PHP, Countdownscript-problem

Verfasst: 22.05.2004 15:36
von Richey
Hi Leute,

ich habe mir folgendes Script runtergeladen:
http://www.dynamicdrive.com/dynamicinde ... count2.htm

In diesem Script werden spezielle Variablen mit Zeitangaben gefüllt:

Code: Alles auswählen

var todaym=today.getMonth()
var todayd=today.getDate()
var todayh=today.getHours()
var todaymin=today.getMinutes()
var todaysec=today.getSeconds()
Damit diese JS-Zeitfunktionen nun nicht die Zeit vom eigenen Rechner sondern vom Server ziehen hab ich PHP mit ins Spiel gebracht:

Code: Alles auswählen

var todaym=<?php echo date('m'); ?>
var todayd=<?php echo date('j'); ?>
var todayh=<?php echo date('g'); ?>
var todaymin=<?php echo date('i'); ?>
var todaysec=<?php echo date('s'); ?>
Das klappt wunderbar. Jetzt ist es aber so das das Script den Countdown in Echtzeit anzeigt. Wenn ich jetzt aber die Sekunden-Variable (var todaysec) durch die PHP-Zeitfunktion fülle wird das Script statisch. Sprich: Die Sekunden werden nicht mehr in Echtzeit angezeigt. Habt Ihr einen Rat? Oder kann ich per JavaScript die Serverzeit (Sekunden) auslesen?

Ein FETTES Danke im Vorraus!

Verfasst: 22.05.2004 18:40
von k-5
ok .. mit js die serverzeit auszurechnen geht ned (jedenfalls nach meinem wissen) ..

also nen kleinen workaround ..

1. definier ne globale js variable der du mittels php die serverzeit zuweist ..
2. mach ne onload funktion die den lag zwischen client und der serverzeit (haste ja statisch in der globalen variable) ..
also sowas in der art. (die 1000 sind weil js millisekunden benutzt ..)

Code: Alles auswählen

<body onload="d = new Date(); lag = servertime*1000-d.getTime();">
3. nun addierst du den lag jedesmal auf die aktuelle client zeit ..
also am anfang von dieser funktion

Code: Alles auswählen

alt:
 today = new Date();
neu:
 d = new Date();
 today = new Date( d->getTime()+lag );
...
also eigneltich kein prob .. wundert mich immer das die meisten scripte sowas ned von sich aus anbieten ..

Verfasst: 22.05.2004 19:06
von Richey
@k-5: hi. erstmal danke.
Du sagst das ich einer globalen JS-Variable per PHP die Serverzeit zuweisen soll. Welche genau? könntest du mir die codezeile posten? Wäre echt nett.

Verfasst: 22.05.2004 19:25
von k-5

Code: Alles auswählen

var servertime=<?php echo time(); ?>
wieviele serverzeiten gibts den bitte schön noch ? ..

Verfasst: 22.05.2004 19:36
von Richey
thx. aber die variable ist doch nicht global (var)

Verfasst: 22.05.2004 19:44
von Richey
Die Countdownuhr wird net angezeigt.

die konsole sagt:

Fehler: syntax error
Quelltext:
today = new Date( d->getTime()+lag );
/*
Quelldatei: http://localhost/datei.php
Zeile: 189, Spalte: 21
*/

Verfasst: 22.05.2004 19:47
von k-5
defintion globale variable: ne variable die überall verfügbar ist ..

wie erreiche ich das ne variable global ist ? ..

ich bin ned so bescheuert und schreib sie in ne funktion rein ? .. (jedenfalls bei js .. bei php wäre die antwort _garnicht_ (jaja in ner funktion globals angeben) zählt hier aber ned)

edit:

btw .. n link würde vielleicht helfen um zu sehen was du falsch gemacht hast ? ..

Verfasst: 22.05.2004 19:49
von Richey
@k-5: hab verstanden.

Die Countdownuhr wird net angezeigt.

die konsole sagt:
Fehler bei:
today = new Date( d->getTime()+lag );

Verfasst: 22.05.2004 19:53
von k-5
argh ..

'->' in '.' umwandeln .. d.getTime() ..

zwei sprachen gleichzeitig is manchmal weng verwirrend ..

Verfasst: 22.05.2004 20:13
von Richey
Okay, jetzt dreh ich gleich durch (du sicher auch):

Jetzt meint er das 'd' undefiniert ist. Ist die OnLoad-Funktion ok?

sry.