Hallo Henrique,
ich schrieb neulich:
Der Unterschied zwischen JavaScript- und PHP-Variablen ist Dir hoffentlich klar.
Ich beginne, diese Hoffnung zu verlieren. Du hast programmiert (bzw. SOLLTEST programmieren - in deinem Code stehen Anführungszeichen die zu einem JavaScript-Fehler führen würden):
var name1 = <?php echo json_encode($name1); ?>;
In dieser Zeile generierst Du JavaScript. Im JavaScript wird eine Variable namens name1 definiert, und sie bekommt einen Wert zugewiesen. Diesen Wert holst Du aus der PHP Variable $name1.
Damit sinnvolles JavaScript entsteht, muss $name1
in PHP einen sinnvollen Wert haben. Ist das der Fall? Hast Du das überprüft? Wenn $name1 nichts zugewiesen wurde, generiert PHP diese JavaScript-Zeile:
var name1 = null;
Das ist syntaktisch korrekt, aber eben leer.
Wenn ich mir deinen Seitenquelltext anschaue, sehe ich im generierten Script genau sowas:
<script>
var treffer = null;
//var name1 = null;
//var name1 = "<p>" + null + "</p>";
var name1 = null ;
var name2 = "null";
var lat1 = null;
Es spricht alles dafür, dass $name1 im PHP nichts enthält.
dass es daran liegen kann dass zum benötigten Zeitpunkt die Information nicht mehr verfügbar ist.
Oder die Information ist nicht auf dem richtigen System verfügbar. Bei Dir laufen zwei Programme ab. Das erste ist das PHP Programm, es läuft auf deinem Server. Es generiert die HTML Seite und es generiert das JavaScript darin. Das JavaScript wird auf deinem Server aber nicht ausgeführt, d.h. Variablen, die das JavaScript-Programm verwendet, gibt's im PHP nicht.
Die HTML Seite wird in den Browser übertragen, auf deinem PC. Und dort läuft das zweite Programm, die diversen <script>-Blöcke. Die Scripte wissen nur das, was in der HTML Seite steht. Variablen des PHP Programm gibt's dort nicht. Es gibt nur das, was das PHP-Programm in die Seite hineingeschrieben hat.
Eine Variable brauchst Du übrigens auch gar nicht. Du kannst den Quelltext für das Popup direkt in den bindPopup-Aufruf hineingenerieren. Statt relativ zu poleLat und poleLon kannst Du auch gleich die richtigen Koordinaten ins Script schreiben.
Mal angenommen, du hast ein Array mit absoluten Breiten- und Längenwerten, und Popup-Texten. Zu Demozwecken initialisiere ich dieses Array einfach mal:
$trefferListe = [
[ "lat" => 3.8616, "lon" => 11.5158, "bezeichnung" => "National museum" ]
[ "lat" => 3.8714, "lon" => 11.5145, "bezeichnung" => "Bois St.Anastasie" ]
];
// Jetzt PHP Modus schließen und <script> Block als Text mit
?>
<script>
<?php foreach ($trefferListe as $treffer): ?>
L.marker( [ <?= $treffer["lat"] ?>, <?= $treffer["lon"] ?> ],
{ icon: streetSmartMarker })
.addTo(map)
.bindPopup(<?= json_encode($treffer["bezeichnung"]) ?>)
.openPopup();
<?php endforeach; ?>
</script>
<?php
Keine einzige JavaScript-Variable nötig!
Wenn deine Trefferliste nur relative Positionen enthält, solltest Du sie bereits im PHP Script in absolute Positionen umrechnen. Das ist besser, als im JavaScript nochmals zu rechnen, wie Du es jetzt tust, denn den generierten JavaScript Quelltext siehst Du als Seitenquelltext. Da kannst Du relativ einfach schauen, ob die richtigen Werte entstanden sind und brauchst nicht im JavaScript zu debuggen.
Rolf
--
sumpsi - posui - obstruxi