1.5k Aufrufe
Gefragt in Skripte(PHP,ASP,Perl...) von
Hallo an alle,

ich möchte gern mit PHP einen Kreis darstellen, der nach einer gewissen Zeit die Farbe wechselt, wie bei einer Ampel.
Nun dachte ich, dass dies mit dem Befehl flush() und sleep (Zeitangabe) möglich sei, aber leider wir dann immer nur der Teil ausgegeben, der nach dem sleep geschrieben steht.
Hätte vielleicht einer von euch eine Idee, was falsch sein könnte oder einen anderen Lösungsvorschlag?

Vielen Dank schon mal fürs lesen :)

LG Vergilia

2 Antworten

0 Punkte
Beantwortet von kicia Mitglied (939 Punkte)
PHP ist ja eigentlich dafür gedacht, Daten immer nur nach einer Anfrage zu senden. Der User müsste demnach zuerst die rote, später die gelbe usw. Ampel selbst anfordern, damit PHP sie sendet.

Ob es mit PHP trotzdem irgendwelche Möglichkeiten gibt, Daten zu "pushen", wäre mir nicht bekannt.

Ich würde für sowas Javascript verwenden, wie zB:

window.setTimeout( function(){
document.getElementById('deinAmpelElement').style.backgroundColor = "#ff0";
}, 2000 );

...<div id="deinAmpelElement" style="background-color:#f00">&nbsp;</div>...
0 Punkte
Beantwortet von computerschrat Profi (32.2k Punkte)
Hallo Vergilia,

vorausgesetzt die Ampelphasen haben ein festes Intervall kannst du folgendes machen:

Die HTML Seite hat im Header einen Refresh hier im Beispiel 10 Sekunden:

<head>
...
...
<?php
<meta http-equiv="refresh" content="10; url=<?php echo $_SERVER['PHP_SELF']; ?>" />
<?php
}
?>
...
</head>

Dann kannst du über eine Zählvariable bei jedem Aufruf die Farbe der neuen Ampelphase berechnen und ausgeben. Die Zählvariable muss aber über den Seitenaufbau hinaus Gültigkeit behalten, also z.B.
$_SESSION['Zaehler']


Gruß
computerschrat
...