Operator_Jon
Erfahrenes Mitglied
HI!
So, ich möchte javascript mit php zusammen schmeißen um einen countdown zu erzeugen.
Ich habe es fast geschafft, nur fehlt da noch etwas logisches denken...
Nehmen wir mal wieder das beispiel Insel-Monarchie!
Dort baut man ein gebäude, das z.b. 180sekunden dauern soll.
nun folgender code(habe extra nur dateien genommen, daich auf mysql immoment kein bock hatte^^):
jedes gebäude hat nunmal eine bauzeit!
Ich schreibe den aktuellen timestamp in eine datei um ihn dann wieder zu lesen.
die differenz aus dem aktuellen timestamp und dem beim verlassen wird errechnet und von der bauzeit abgezogen.
die bauzeit beträgt in diesem fall 120sekunden.
aber irgendwie klappt es manchmal und irgendwie nicht?
/€dit:
habs selber gelöst
-close- please!
So, ich möchte javascript mit php zusammen schmeißen um einen countdown zu erzeugen.
Ich habe es fast geschafft, nur fehlt da noch etwas logisches denken...
Nehmen wir mal wieder das beispiel Insel-Monarchie!
Dort baut man ein gebäude, das z.b. 180sekunden dauern soll.
nun folgender code(habe extra nur dateien genommen, daich auf mysql immoment kein bock hatte^^):
PHP:
<html>
<head>
<title>Test1</title>
<script>
function pop() {
var attribWithoutAll="location=no,menubar=no,toolbar=no,status=no";
attribWithoutAll+=",resizable=no,scrollbars=no,width=450,height=200";
subwindow=window.open("popup.php","popup",attribWithoutAll);
subwindow.moveTo(10,50);
}
</script>
</head>
<body onUnLoad="pop()">
<?php
if ($action == "") {
if (!file_exists("time.db")) {
?>
<form name="form" action="<?php $_PHP_SELF ?>?action=build" method="post">
<input type="submit" value="build thing" />
</form>
<?php
}
else {
$fp = fopen("time.db","r");
$data = fgets($fp,99);
fclose($fp);
$data = time() - $data;
$fp = fopen("build.db","r");
$data2 = fgets($fp,99);
fclose($fp);
$data = $data2-$data;
echo "<form name='form'>";
echo "<input type='hidden' name='field' value='$data'>";
echo "</form>";
?>
<SCRIPT type="text/javascript">
var field = window.document.form.field.value;
var TargetTime = new Date();
var TimeBeginn = TargetTime.getTime();
function CountDown(myid, seconds) {
var CurrentDate = new Date();
var CurrentTime = CurrentDate.getTime();
var TimeEnd = TimeBeginn + (seconds*1000);
TargetTime.setTime(TimeEnd);
var Targetbox=document.getElementById(myid);
var OpenTime = Math.floor((TargetTime-CurrentTime)/1000);
var s = OpenTime % 60;
var m = ((OpenTime-s)/60) % 60;
var h = ((OpenTime-s-m*60)/(60*60));
var fh = ((h < 10) ? "0" : "");
var fm = ((m < 10) ? ":0" : ":");
var fs = ((s < 10) ? ":0" : ":");
var Time = fh+h+fm+m+fs+s;
var OutputString=Time;
if(OpenTime<=0) { // Event wenn der Countdown abgelaufen ist
var OutputString="Jetzt!";
}
Targetbox.innerHTML=OutputString; // Ausgabe des Strings in der Betreffenden Zelle
window.setTimeout("CountDown('" + myid + "', '" + seconds + "')", 1000);
}
</script>
<span id='id'><script type='text/javascript'>CountDown('id', field);</script></span>
<?php
}
}
if ($action == "build") {
$fp = fopen("time.db","w");
fwrite($fp,time());
fclose($fp);
?>
<meta http-equiv="refresh" content="4; URL=test1.php">Weiterleitung in 4 Sekunden!
<?php
}
?>
</body>
</html>
Ich schreibe den aktuellen timestamp in eine datei um ihn dann wieder zu lesen.
die differenz aus dem aktuellen timestamp und dem beim verlassen wird errechnet und von der bauzeit abgezogen.
die bauzeit beträgt in diesem fall 120sekunden.
aber irgendwie klappt es manchmal und irgendwie nicht?
/€dit:
habs selber gelöst
-close- please!
Zuletzt bearbeitet: