• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] PHP -> JS Variablenübergabe

69bruno

New member
Hallo,
ich habe ein kleines php-script, dass mir aus einem Ordner zufällig ein Hintergrundbild aussucht:
PHP:
	public function add_imagerandom_theme($event)
	{
		$ordner = dirname(__dir__).'/img/'; 
		$verz = opendir($ordner);
		$linkl = array();
		while($file = readdir($verz))
		{
		if($file != "." && $file != "..")
		{
			array_push ($linkl, $file);
        }
		}
		$index = array_rand($linkl, 1);
		closedir($verz);
		$zufall = dirname(__dir__).'/img/'.$linkl[$index];
	}
}

Das Script funktioniert auch, mit echo kann ich mir den Pfad der ausgewählten Bilddatei ausgeben lassen.
Jetzt möchte ich das Bild als Hintergrund setzen.
Da das Ganze für ein PHP-Forum gedacht ist, füge ich ein js in eine html-Datei ein, die per Event geladen wird.
Nach vielen Beispielen und Versuchen bin ich zuletzt bei dieser Schreibweise angelangt, die aber auch nicht zum Erfolg führt:
HTML:
<script>
 var hintergrund = <?php echo json_encode($zufall); ?>;
 alert(hintergrund);
 document.getElementById('bild').style.backgroundImage = "url('hintergrund')";
</script>

Ich bekomme immer ein "unexpected token "<".
Hat jemand eine Idee, wie ich das fixen kann ?:confused:
 
Zuletzt bearbeitet von einem Moderator:
Da das Ganze für ein PHP-Forum gedacht ist, füge ich ein js in eine html-Datei ein, die per Event geladen wird.
Was meinst du mit "per Event geladen" genau? Wie sieht der Code dazu aus?

Ich bekomme immer ein "unexpected token "<".
Das ist ein Indiz dass der PHP-Aufruf an der Stelle nicht ausgeführt wird sondern so wie er ist in den Browser gelangt ist. Das kann mehrere Ursachen haben. An welcher Stelle rufst du denn die Funktion add_imagerandom_theme() auf? Du zeigst hier nur die Definition der Funktion.
Aus welchem Grund möchtest du an der Stelle in JSON konvertieren?
 
Wenn dein Php Script ja nur eine Url ausgibt , kannst du dir den weg über JS auch ersparen.
Das wäre meine Idee
PHP:
<?php
$ordner = './testen/img/related/'; 
$verz = opendir($ordner);
$linkl = array();
while($file = readdir($verz)){
    if($file != "." && $file != ".."){
        array_push ($linkl, $file);
    }
}
$zufall = array_rand($linkl, 1);
?>
<style>
body{
height:100vh;
width:100vw;
background:url('<?php echo $ordner.$linkl[$zufall]; ?>');
}
</style>
<body>
</body>
 
So,
hat was gedauert, aber es läuft. Das Problem war, dass das script per Event zu früh aufgerufen wurde.
Events sind Schnittstellenpunkte, die in die html-Dateien des PHPB-Board eingebaut sind. Dort gibt es dann Bezeichnungen (z.B. overhead_header_head_append), mit denen man Ergänzungen in den Code bringen kann. Man muss nur an genau definierter Stelle eine html-Datei mit eben diesem Namen abspeichern und schon wird der Inhalt der phpbb-html-Datei hinzugefügt. Und da war ich weit bevor der Body überhaupt definiert wird, da konnte ich halt auch keine Änderungen am Bodystyle machen.
Ich möchte JS nutzen, da in einer weiteren Stufe mit einem einstellbaren Intervall das Hintergrundbild durchgewechselt wird. Das soll nicht auf dem Server laufen sondern auf den Clients.
 
Zurück
Oben