JS und PHP, Countdownscript-problem

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

JS und PHP, Countdownscript-problem

Beitrag 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!
Benutzeravatar
k-5
Mitglied
Beiträge: 166
Registriert: 05.06.2003 23:21
Wohnort: soa kaff
Kontaktdaten:

Beitrag 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 ..
ich will mein auto polieren ! ..

ja .. ich weiß .. man kann das mit nem lappen machen .. aber ICH will unbedingt nen hammer nehmen .. WIE geht das :)
Richey

Beitrag 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.
Benutzeravatar
k-5
Mitglied
Beiträge: 166
Registriert: 05.06.2003 23:21
Wohnort: soa kaff
Kontaktdaten:

Beitrag von k-5 »

Code: Alles auswählen

var servertime=<?php echo time(); ?>
wieviele serverzeiten gibts den bitte schön noch ? ..
ich will mein auto polieren ! ..

ja .. ich weiß .. man kann das mit nem lappen machen .. aber ICH will unbedingt nen hammer nehmen .. WIE geht das :)
Richey

Beitrag von Richey »

thx. aber die variable ist doch nicht global (var)
Richey

Beitrag 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
*/
Zuletzt geändert von Richey am 22.05.2004 19:48, insgesamt 1-mal geändert.
Benutzeravatar
k-5
Mitglied
Beiträge: 166
Registriert: 05.06.2003 23:21
Wohnort: soa kaff
Kontaktdaten:

Beitrag 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 ? ..
ich will mein auto polieren ! ..

ja .. ich weiß .. man kann das mit nem lappen machen .. aber ICH will unbedingt nen hammer nehmen .. WIE geht das :)
Richey

Beitrag von Richey »

@k-5: hab verstanden.

Die Countdownuhr wird net angezeigt.

die konsole sagt:
Fehler bei:
today = new Date( d->getTime()+lag );
Benutzeravatar
k-5
Mitglied
Beiträge: 166
Registriert: 05.06.2003 23:21
Wohnort: soa kaff
Kontaktdaten:

Beitrag von k-5 »

argh ..

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

zwei sprachen gleichzeitig is manchmal weng verwirrend ..
ich will mein auto polieren ! ..

ja .. ich weiß .. man kann das mit nem lappen machen .. aber ICH will unbedingt nen hammer nehmen .. WIE geht das :)
Richey

Beitrag von Richey »

Okay, jetzt dreh ich gleich durch (du sicher auch):

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

sry.
Antworten

Zurück zu „Coding & Technik“