Sönke Tesch: php-Variable an JavaScript (PHP-variable bekommt falschen Wert)

Beitrag lesen

Ich sitz seit Tagen vor dem Problem, wie ich eine PHP-Variable an ein JavaScript übergebe. Es wird ein Wert zwar an die Java Script übergeben, dieser aber entspricht nicht dem Wert der PHP - Variablen!

PHP hat mit Javascript erstmal garnichts zu tun. Das PHP-Skript läuft auf dem Server und erzeugt eine HTML-Datei inklusive des eingebauten Javascript-Codes.
Ist das PHP-Skript abgelaufen, wird diese HTML-Datei an den Browser geschickt, der nimmt die HTML-Daten auseinander und führt schlussendlich den Javascript-Code aus.

Zwischen PHP und Javascript steht also mindestens die HTML-Datei, und in der Regel noch einige zigtausend Kilometer Kabel.
Vielleicht erkennst Du das am besten, wenn Du dir die "PHP-Seite" mal vom Browser als Quelltext anzeigen lässt. Dort wirst Du keinen PHP-Code finden, nur HTML und Javascript.

Also: Du möchtest den Inhalt der PHP-Variablen $datei in Javascript nutzen?

echo "<a href=javascript:format("$datei")>". htmlentities($datei) ."</a><br>";

Das sieht dann im Browser-Quelltext-Fenster so aus:

<a href=javascript:format("mein_datei_variablen_inhalt")>mein_datei_variablen_inhalt</a><br>

Weiterhin:

echo  "<script language=javascript>";

Javascript-Bereiche besser folgendermaßen einleiten:

<script type="text/javascript">

echo  " alert(datei);";      //zur Überprüfung  und Fehler wird erkannt

Welcher Fehler? Bedenke, daß es hier keine PHP-Variable $datei gibt und eine Javascript-Variable datei hier wahrscheinlich
noch garnicht bekannt ist.

echo  "function format(datei) {";
echo  "alert  (datei);";
echo  "var wshell = new ActiveXObject("WScript.Shell");";
echo  "var befehl = "c:\cmd.exe /C //UNC/+ datei +".bat" ";

Hier hast Du den Fehler, daß Du die Javascript-Variable datei garnicht einbindest, sondern das Wort datei. Außerdem kommst Du anscheinend mit den Anführungszeichen durcheinander. Auch hier: Schau Dir das Ergebnis des PHP-Befehls echo im Browser-Quellcode-Fenster an.
Richtig:

echo "var befehl = "c:\cmd.exe /C //UNC/" + datei + ".bat";

echo  " wshell.run(befehl);";
echo  " }";
echo  "</script>" ;

Der Wert der übergeben werden soll ist eine Artikelnummer!!!

Warum heißt er dann datei?

Gruß,
  soenk.e