PHP-Funktion aus JavaScript aufrufen

MAN

Erfahrenes Mitglied
Hallo,

besteht die Möglichkeit eine PHP-Funktion aus JavaScript heraus aufzurufen?

Beispiel, ich habe eine Funktion geschrieben, die mir den aktuellen Counter von der Besucherzahl zurückgibt. Wenn ich jetzt aber Javascript habe, und dann folgendes progge:

PHP:
<script language="JavaScript">
	function getVisitors()
	{
		document.getElementById("visitors").innerHTML = "<? echo getVisitorsFromDB(); ?>";
	}
</script>
Dann wird ja der PHP-Code geparsed, und es steht fest drin, zum Beispiel 143. Da ich aber mittels
PHP:
<body onLoad="getVisitors(); window.setInterval('getVisitors()',1000);">
	<span id="visitors" /> Besucher
</body>
meinen Counter eben sekündlich updaten will, bringt mir das nichts!

Vielleicht hat jemand einen schönen Workaround dafür! :rolleyes:

Vielen Dank!


mfG,
MAN
 
Zuletzt bearbeitet:
Hi,

da PHP auf dem Server ausgeführt wird, müsstest Du die Seite schon periodisch aktualisieren:
PHP:
<body onLoad="getVisitors(); window.setInterval('location.reload()',1000);">

Gruß

P.S.: das würde natürlich die Usability erheblich einschränken. Ich würde zur Anzeige des Counters ein kleines Flash verwenden, welches sekündlich den aktuellen Wert aus einer Textdatei liest oder das PHP-Script aufruft.
 
Per Javascript könntest du in Intervallen ein Bild neu laden....welches diese Anzahl als Ziffer enthält.
Dein PHP-Skript müsste dann halt dieses Bild mit bspw. den GD-Funktionen erzeugen.
 
P.S.: das würde natürlich die Usability erheblich einschränken.
Richtig :) so etwas hätte ich eventuell auch noch hinbekommen, einfach mit parent.location.href = "currentSite.php";

Aber das ist ja wie gesagt Benutzerunfreundlich.

Mit einem Flash-Object oder bei JavaScript mittels PHP und der GD-Funktionen habe ich noch überhaupt keine Ahnung von.

Habt ihr vielleicht das schon selbst gemacht, und mir schnell ein kleinen Beispiel zeigen? wie mache is es mit einem Flash-Object? Wie erstelle ich so etwas? Brauch ich dazu ein anderes Programm, oder kann ich das selbst proggen?

Vielen Dank für Antworten! :)


mfG,
MAN
 
Hi,

Brauch ich dazu ein anderes Programm, oder kann ich das selbst proggen?
In der Tat; Macromedia Flash wird dazu benötigt. Ich habe so etwas schon mehrfach erstellt und es funktioniert prima.

Der Vorschlag von fatalus wäre für Dich aber wohl sinnvoller, wenn Du Dich in PHP schon auskennst. ;)

Gruß
 
Die PHPSache ist recht simpel.....das geht mit der Funktion imagestring()

Beispiel mit Uhrzeit

Die PHP-Source für das Bild findest du dort.
Beim Javascript ist wichtig, das die aufgerufene URL immer variiert, damit es auch sicher neu geladen wird....in dem Beispiel hab ich per Javascript einfach nen Timestamp an die Bildadresse rangehängt(siehst du ja im Quelltext der Seite)
 
@fatalus: Dein Beispiel ist für meine Zwecke an sich perfekt. Jedoch ist es eigentlich auch nicht sehr benutzerfreundlicher, oder?

Da er ja immer jede Sekunde (so wollt ich das natürlich auch haben) das neue Bild mit der aktuellen Zeit laden muss, springt der Cursor immer wieder auf die Sanduhr.

Ich bräucht eben so etwas wie es bei Javascript möglich ist (Beispiel gibts genug für Uhren anzeigen). Jeodh will ich aus einer DB Werte rauslesen.

Die Alternative wäre jetzt mit JavaScript werte aus ner MySQL-DB rauszulesen. Aber so etwas kann ja JavaScript leider nicht, oder etwa doch?!


mfG,
MAN
 
Andere Frage: so wie man das neu generierte Bild sich immer wiederaus der php-Datei zieht, kann man sich da nich einfach andere Werte holen?

Also jetzt nicht im BIldformat, sondern einfach so wie ein return-Wert von einer Funktion?

Mit include( "function.php"); gehts ja auch nicht, da wird die php-Datei ja auch gleich wieder geparsed. Gut wäre eben eine Funktion wie imageString für Text oder ähnliches...

mfG,
MAN
 
Das geht nur bedingt.
Statt einem Bild könnte man in Intervallen eine externe JS-Datei neu aufrufen, ...in welcher dann...wieder von PHP erzeugt, eine aktualisierte Javascript-Variable drinnen steht.....die du dann irgendwohin schreiben kannst.

Das Dumme dabei ist, dass dies mit dem IE zwar geht....Mozilla z.B. spielt da aber nicht mit.

Eine andere Möglichkeit wäre, in einem versteckten iFrame eine HTML-Seite ständig neu zu laden, welche dann diese Werte, die du haben willst, enthält.....und z.B. an das Elternfenster sendet.
 
Zurück