PHP Status Skript

Ah super! Also könnte man doch eigentlich anhand der "filemtime" Funktion, das countdown skript dahingehen verändern, das es als konstante nicht den "normalen" unix Timestamp benutzt, sondern eben die Zeit der änderung, der Datei? Richtig?

Jetzt brauch ich nur noch jemanden der das Kann :D

PS: Echt nett von dir Relic das Du dich da so reinkniest :)

//edit:

Ich schau grad mal wie man das Zieldatum in deinem PHP Skript ändert. Aber irgendwie seh ich da nicht durch :freak:.
 
Zuletzt bearbeitet:
Die Function Countdown(...) selber musst du nicht verändern.

du musst nur anhand des mit filemtime erhaltenen Dateidatums und der Funktionen date() und mktime()
(bei mktime $stunden+24 eintragen)
die Endzeit aufbereiten und an die Function Countdown(...) analog
echo Countdown('01.01.2006 00:00:00'); übergeben


Das ganze funzt aber nur, wenn auch tatsächlich diese Datei immer nur bei Serverneustart o.ä. aktualisiert wird. Wenn die Datei hingegen zb. bei jedem userklick verändert wird, geht das SO logischerweise natürlich nicht.
Da müssteste dir ggf. ne andere Datei suchen, die diese Bedingungen erfüllt.


// Edit: ich meinte natürlich nicht Skript, sondern function. :)
 
Zuletzt bearbeitet:
Naja, also ich würde das Datum + Zeit direkt in eine Datei schreiben, sobald meine Internetverbindung trennt, und automatisch wieder Verbindet.

Allerdengs raff ich nit so ganz wie das PHP-Skript dann aussehen soll.

Könntest Du das ändern?
 
oder noch einfacher probier mal folgendes:
so ungefähr (checke Syntaxfehler ;)):

statt:
echo Countdown('01.01.2006 00:00:00');
ersetzen in:

$filename = '(pfad + )Dateiname';
$dateidatum = filemtime($filename) + 86400; # 24h in sekunden
$dateidatum = date("d.m.Y H:i:s", $dateidatum);
echo Countdown($dateidatum);

Edit:
Na wenn du in die Datei das Datum schreiben lässt, müsstest ganz anders machen mit fopen(), fwrite(), fread()
Dann wäre das meine ursprüngliche allererste Variante in diesem Thread.

Allerdings müsstest Du dann noch eine Funktion schreiben, die ständig checkt und erkennt wann die Verbindung getrennt wird. Das wird schon aufwändiger und nicht unproblematischer, wenn das überhaupt geht.
Oder willste den timestamp immer von Hand eintragen, glaube das willste ja auch net. ;)
 
Zuletzt bearbeitet:
Nein das nicht. Aber ich kenn jemanden der mir ein kleines Programm für windows schreiben will, was mein Internetstatus überwacht. Und wenn das Programm merkt, Leitung ist weg - und wieder da, dann schreibt es mir das Datum in das PhP-Skript und es ist genau die richtige Zeit im Skript :).


Also von der PHP-Seite her ist denke ich das Problem , dank deiner Hilfe, gelöst ;).

Allerdings hätte ich noch eine Frage. Gibt es eine möglichkeit das man die Zeit "laufen" sieht? Das wär jetzt allerdings nur eine Kosmetische sache :D
 
dafür gibts jede Menge Javascripte.
müsstest also einfach die php-zeit ausgabe dann an das javascript übergeben, damit es weiterlaufen kann.

PS:
Hättest nicht gleich sagen können, das Dir jemand ein Prog schreibt, dann hätten wir uns mindestens 20 Posts sparen können. ;)
 
Zuletzt bearbeitet:
Na ich wollt mal gucken was Du so drauf hast :D...

Ne spass beiseite, das hab ich eben erst erfahren das er das für mich macht :freak:

Zum Javaskript:

Wie oder wann kann ich sowas übergeben? Sorry aber ich hab von sowas echt null Plan :freak:
 
google dir ein passendes js-script zv. "javascript laufende uhr", dort steht meistens eine beispielzeit drinnen oder ein 'new Date();' das tauschste gegen Deine Zeit aus. fertig.

zb. in den JS-Befehl
new Date(Jahr, Monat, Tag, Stunden, Minuten, Sekunden);
setzte mit php deine php-zeiten entsprechend aufbereitet ein und gibst dann die fertige seite online für alle aus.

Hier noch ein Link zum JS-Date Befehl
http://de.selfhtml.org/javascript/objekte/date.htm
 
Zuletzt bearbeitet:
Mhh Sorry, Ich versteh nur Bahnhof^^

Ich hab bereits ein Datums skript, aber ich weiss nicht was Du mit "aufbereiten" der PhP Daten meinst. Kann ich die Zeit, so wie sie fertig "rauskommt", nicht einfach irgendwo, irgendwie an das Javaskript übergeben? Ich weiss nur leider absolut nicht wo ich das machen muss :lol:.

Wo in deinem Skript steht denn die "endgültige" Zeit drin? $zeit, $zieldatum oder ganz unten im "countdown"?
 
Achso, jetzt versteh ich Dich.

Ich dachte, ich soll aus dem bereits vorendenem PHP-Skript irgendwas ans Java übergeben. Gut dann weiss ich ja wie ich das jetzt machen muss :daumen:.


Danke für deine geduld ;).


Sobald ich das Programm hab was mir den "Status" (also die trennungszeit) in das skript schreibt, werd ich es hier posten. Solange werd ich das jetzt erstmal händisch lösen.
 
Nee mein php- Script (ich denke jemand schreibt dir was?) liefert dir die verbleibende Zeit bis Ende als formatierten text zurück, das brauchst du so dann nicht.

Du brauchst ja nur die Endzeit !

die Startzeit haste ja als unixtimestamp vorliegen. (aus datei ausgelesen)
nun schreibste

PHP:
<?
$dateidatum = $Startzeit + 86400; # 24h in sekunden
 
echo "
<html>
<head>
<title>Countdown bis zu einem bestimmten Zeitpunkt</title>
 
<script language=\"Javascript\">
<!--
 
var CountdownJahr = ".date("Y", $dateidatum)."
var CountdownMonat = ".date("n", $dateidatum).";
var CountdownTag = ".date("j", $dateidatum).";
var CountdownStunde = ".date("H", $dateidatum).";
var CountdownMinute = ".date("i", $dateidatum).";
var CountdownSekunde = ".date("s", $dateidatum).";
function CountdownAnzeigen()
{
var Jetzt = new Date();
var Countdown = new Date(CountdownJahr, CountdownMonat-1, CountdownTag, CountdownStunde, CountdownMinute, CountdownSekunde);
var MillisekundenBisCountdown = Countdown.getTime()-Jetzt.getTime();
var Rest = Math.floor(MillisekundenBisCountdown/1000);
var CountdownText = \"\";
 
if(Rest >= 31536000)
{
var Jahre = Math.floor(Rest/31536000);
Rest = Rest-Jahre*31536000;
 
if(Jahre > 1 || Jahre == 0)
{
CountdownText += Jahre + \" Jahre \";
}
else if(Jahre == 1)
{
CountdownText += Jahre + \" Jahr \";
}
}
if(Rest >= 86400)
{
var Tage = Math.floor(Rest/86400);
Rest = Rest-Tage*86400;
 
if(Tage > 1 || Tage == 0)
{
CountdownText += Tage + \" Tage \";
}
else if(Tage == 1)
{
CountdownText += Tage + \" Tag \";
}
}
if(Rest >= 3600)
{
var Stunden = Math.floor(Rest/3600);
Rest = Rest-Stunden*3600;
 
if(Stunden > 1 || Stunden == 0)
{
CountdownText += Stunden + \" Stunden \";
}
else if(Stunden == 1)
{
CountdownText += Stunden + \" Stunde \";
}
}
if(Rest >= 60)
{
var Minuten = Math.floor(Rest/60);
Rest = Rest-Minuten*60;
 
if(Minuten > 1 || Minuten == 0)
{
CountdownText += Minuten + \" Minuten \";
}
else if(Minuten == 1)
{
CountdownText += Minuten + \" Minute \";
}
}
 
if(Rest > 1 || Rest == 0)
{
CountdownText += Rest + \" Sekunden \";
}
else if(Rest==1)
{
CountdownText += Rest + \" Sekunde \";
}
 
document.getElementById('Countdown').innerHTML = CountdownText;
window.setTimeout(\"CountdownAnzeigen()\", 1000);
}
//-->
</script>
</head>
<body onLoad=\"CountdownAnzeigen();\">
 
<span id=\"Countdown\"></span>
 
</body>
</html> 
";
?>

Edit
da fehlte noch das <html> schnullibulli oben.
 
Zuletzt bearbeitet:
Vorher müsste ich ja dann noch mittels fopen(); aus meiner datei auslesen oder?
 
Selbstverständlich.
Ich dachte soweit warst Du bereits? ;)

$filename = "blabla/deinedatei.txt";
$handle = fopen ($filename, "r"
);
$Startzeit = fread ($handle, filesize ($filename
));
fclose ($handle);


$Startzeit ist hierbei der Dateinhalt.
Wenn nix anderes als das Datum (keine leerzeichen, Zeilenumbrüche) im unixtimestamp-format drinnensteht, sollte das bereits reichen.

einfach an den anfang das scriptes kopieren.


Hier nochmal die erklärung der funktion
http://de3.php.net/manual/de/function.fread.php
 
supi es funzt :D.

Du bist mein Persönlicher Held 2006 :daumen:.
 
Na endlich, jetzt hat ers. :D

das <span id=\"Countdown\"></span>
aus dem js noch an die gewünschte Stelle in deiner html-seite einfügen und dort genau erscheint dann die laufende Restzeit.
 
Ich hab ein Problem mit dem Skript.

Ich hab jetzt ein Program das mir den Unix Timestamp in eine log Datei schreibt, sobald meine lokale ip-adresse sich geändert hat (also die vom Provider). Soweit, sogut, das klapppt auch wunderbar.

Allerdings stresst das Javascript.

Es zählt zwar brav die 24h runter, aber sobald ich die seite neu lade, fängt er von vorne an :freak:.

//edit:
Hier mal mein Skript:
Code:
<?
$filename = "status.txt";
$handle = fopen ($filename, "r");
$Startzeit = fread ($handle, filesize ($filename));
fclose ($handle);
$dateidatum = $Startzeit + 86400; # 24h in sekunden

echo "
<html>
<head>
<title>24htrennung</title>

<script language=\"Javascript\">
<!--

var CountdownJahr = ".date("Y", $dateidatum)."
var CountdownMonat = ".date("n", $dateidatum).";
var CountdownTag = ".date("j", $dateidatum).";
var CountdownStunde = ".date("H", $dateidatum).";
var CountdownMinute = ".date("i", $dateidatum).";
var CountdownSekunde = ".date("s", $dateidatum).";
function CountdownAnzeigen()
{
var Jetzt = new Date();
var Countdown = new Date(CountdownJahr, CountdownMonat-1, CountdownTag, CountdownStunde, CountdownMinute, CountdownSekunde);
var MillisekundenBisCountdown = Countdown.getTime()-Jetzt.getTime();
var Rest = Math.floor(MillisekundenBisCountdown/1000);
var CountdownText = \"\";

if(Rest >= 31536000)
{
var Jahre = Math.floor(Rest/31536000);
Rest = Rest-Jahre*31536000;

if(Jahre > 1 || Jahre == 0)
{
CountdownText += Jahre + \" Jahre \";
}
else if(Jahre == 1)
{
CountdownText += Jahre + \" Jahr \";
}
}
if(Rest >= 86400)
{
var Tage = Math.floor(Rest/86400);
Rest = Rest-Tage*86400;

if(Tage > 1 || Tage == 0)
{
CountdownText += Tage + \" Tage \";
}
else if(Tage == 1)
{
CountdownText += Tage + \" Tag \";
}
}
if(Rest >= 3600)
{
var Stunden = Math.floor(Rest/3600);
Rest = Rest-Stunden*3600;

if(Stunden > 1 || Stunden == 0)
{
CountdownText += Stunden + \" Stunden \";
}
else if(Stunden == 1)
{
CountdownText += Stunden + \" Stunde \";
}
}
if(Rest >= 60)
{
var Minuten = Math.floor(Rest/60);
Rest = Rest-Minuten*60;

if(Minuten > 1 || Minuten == 0)
{
CountdownText += Minuten + \" Minuten \";
}
else if(Minuten == 1)
{
CountdownText += Minuten + \" Minute \";
}
}

if(Rest > 1 || Rest == 0)
{
CountdownText += Rest + \" Sekunden \";
}
else if(Rest==1)
{
CountdownText += Rest + \" Sekunde \";
}

document.getElementById('Countdown').innerHTML = CountdownText;
window.setTimeout(\"CountdownAnzeigen()\", 1000);
}
//-->
</script>
</head>
<body onLoad=\"CountdownAnzeigen();\">

24h Trennung in <span id=\"Countdown\"></span>

</body>
</html>
";
?>
 
Zuletzt bearbeitet:
Eventuell ein Browser-Cache-Problem, sprich, dass der alte Inhalt geladen wird?
Versuch mal mit php irgendeine Zufallszahl in den js code mit reinzukompieren, so dass die Seite sich bei jedem Aufruf vom Code geringfügig unterscheidet und im HTML Header gleich noch die META-Tags erweitern

Dann schau mal testweise in den Quelltext aus dem Browser heraus, ob die Zahl bzw. der Quellcode sich auch geändert hat. Manchmal hilft auch rechte Maustaste auf freie Stelle in der Seite und dann "Aktualisieren".

also z.b.

PHP:
$dateidatum = $Startzeit + 86400; # 24h in sekunden
echo "
<html>
<head>
<title>24htrennung</title>
<script language=\"Javascript\">
<!--
var CountdownJahr = ".date("Y", $dateidatum)."

ändern in

PHP:
$dateidatum = $Startzeit + 86400; # 24h in sekunden
mt_srand((double)microtime()*1000000);
$testzahl = mt_rand(); 
 
echo "
<html>
<META http-equiv=\"pragma\" content=\"no-cache\"> 
<head>
<title>24htrennung</title>
<script language=\"Javascript\">
<!--
var TestZahl = '".$testzahl."';
var CountdownJahr = ".date("Y", $dateidatum).";
 
So, ich hab den Code jetzt so geändert wie beschrieben, aber keine Besserung :(

Ich hab jetzt auch mal andere Browser getestet und Rechner wo die Seite noch nie auf war.
 
So also bei mir funktioniert das script einwandfrei. Fängt auch nicht wieder von vorn an.
Habe mir dein gepostetes script kopiert und in eine status.txt mal testweise nen timestamp von '1140191073' reingeschrieben. Alles absolut einwandfrei, sogar ohne meine Änderungen!

Weiss net wieso es bei dir net funzt.

Funzt sowohl im IE als auch im Firefox.
 
Zuletzt bearbeitet:
Zurück
Oben