webentwicklung-frage-antwort-db.com.de

Wie kann ich eine JavaScript-Variable als PHP Variable?

Ich versuche, JavaScript-Variablen in PHP -Code als PHP -Variablen einzuschließen, habe aber Probleme damit. Wenn Sie auf eine Schaltfläche klicken, wird folgende Funktion aufgerufen:

<script type="text/javascript">
    function addTraining(leve, name, date)
    {
        var level_var = document.getElementById(leve);
        var training_name_var = document.getElementById(name);
        var training_date_var = document.getElementById(date);

        <?php
            $result = "INSERT INTO training(level, school_name, training_date) VALUES('level_var', 'training_name_var', 'training_date_var')" or die("Query not possible.");
        ?>

</script>

Ist es möglich?

18
Selom

PHP wird serverseitig ausgeführt. JavaScript wird clientseitig im Browser des Benutzers ausgeführt, der die Seite anfordert. Zum Zeitpunkt der Ausführung von JavaScript gibt es keinerlei Zugriff auf PHP auf dem Server. Bitte lesen Sie diesen Artikel mit Details zur clientseitigen vs. serverseitigen Codierung .

Was passiert, kurz gesagt, ist dies:

  • Sie klicken auf einen Link in Ihrem Browser auf Ihrem Computer unter Ihrem Schreibtisch
  • Der Browser erstellt eine HTTP-Anforderung und sendet sie an einen Server im Internet
  • Der Server prüft, ob er die Anfrage bearbeiten kann
  • Wenn die Anforderung eine PHP Seite betrifft, wird der Interpreter PHP gestartet
  • Der PHP - Interpreter führt den gesamten PHP - Code auf der von Ihnen angeforderten Seite aus
  • Der PHP - Interpreter führt KEINEN JS-Code aus, da er keine Ahnung hat
  • Der Server sendet die vom Dolmetscher zusammengestellte Seite zurück an Ihren Browser
  • Ihr Browser rendert die Seite und zeigt sie Ihnen an
  • JavaScript wird auf Ihrem Computer ausgeführt

In Ihrem Fall schreibt PHP den JS-Code in die Seite, sodass er ausgeführt werden kann, wenn die Seite in Ihrem Browser gerendert wird. Zu diesem Zeitpunkt ist der Teil PHP in Ihrem JS-Snippet nicht mehr vorhanden. Es wurde bereits auf dem Server ausgeführt. Es hat eine Variable $result erstellt, die eine SQL-Abfragezeichenfolge enthält. Sie haben es nicht verwendet, also ist die Seite verschwunden, wenn die Seite an Ihren Browser zurückgesendet wird. Schauen Sie sich den Quellcode an, wenn die Seite in Ihrem Browser dargestellt wird. Sie werden sehen, dass sich an der Stelle, an der Sie den Code PHP einfügen, nichts befindet.

Die einzige Möglichkeit, das zu tun, was Sie suchen, ist entweder:

  • führen Sie eine Weiterleitung zu einem PHP - Skript durch oder
  • führen Sie einen AJAX - Aufruf eines PHP - Skripts aus

mit den Werten, die Sie in die Datenbank einfügen möchten.

36
Gordon
<script type="text/javascript">
var jvalue = 'this is javascript value';

<?php $abc = "<script>document.write(jvalue)</script>"?>   
</script>
<?php echo  'php_'.$abc;?>
21
dg_0175

Sie scheinen verwirrenden Code auf Client- und Serverseite zu sein. Wenn Sie auf die Schaltfläche klicken, müssen Sie die Variablen an den Server senden (posten, abrufen), auf dem der PHP ausgeführt werden kann. Sie können entweder die Seite absenden oder einen Ajax-Aufruf verwenden, um nur die Daten zu übermitteln

4
Don Dickinson

PHP läuft auf dem Server. Es gibt (normalerweise) etwas Text aus. Diese wird dann vom Client analysiert. 

Während und nach der Analyse auf dem Client wird JavaScript ausgeführt. Zu diesem Zeitpunkt ist es für das Skript PHP zu spät, etwas zu tun.

Wenn Sie etwas an PHP zurückgeben möchten, müssen Sie eine neue HTTP-Anforderung erstellen und die Daten darin aufnehmen (entweder in der Abfragezeichenfolge (GET-Daten) oder im Nachrichtentext (POST-Daten)).

Sie können dies durch:

  • Einstellungsort (nur GET)
  • Formular absenden (mit der FormElement.submit()-Methode)
  • Verwenden des XMLHttpRequest - Objekts (die als Ajax bekannte Technik). Verschiedene Bibliotheken erledigen das Schwergewicht für Sie, z. YUI oder jQuery .

Für welche Option Sie sich auch entscheiden, die PHP ist im Wesentlichen die gleiche. Lesen Sie von $_GET oder $_POST, führen Sie den Datenbankcode aus und geben Sie dem Client einige Daten zurück.

3
Quentin

Ich hatte vor einigen Wochen das gleiche Problem wie deins. Ich habe jedoch eine brillante Lösung für den Austausch von Variablen zwischen PHP und JavaScript entwickelt. Es hat gut für mich funktioniert:

  1. Erstellen Sie ein verstecktes Formular auf einer HTML-Seite

  2. Erstellen Sie ein Textfeld oder einen Textbereich in diesem ausgeblendeten Formular

  3. Nachdem Sie Ihren gesamten Code in das Skript geschrieben haben, speichern Sie den endgültigen Wert Ihrer Variablen in diesem Textfeld

  4. Verwenden Sie die Zeile $ _REQUEST ['textbox name'] in Ihrer PHP, um Zugriff auf den Wert Ihrer JavaScript-Variablen zu erhalten.

Ich hoffe, dieser Trick funktioniert für Sie.

1
Sepehr

Sie können machen, was Sie wollen, aber nicht so. Sie müssen eine AJAX - Anforderung von JavaScript zurück an den Server senden, wo ein separates PHP - Skript die Datenbankoperation ausführen kann.

0
dj_segfault

Sie können alle Werte wie folgt annehmen:

$abc = "<script>document.getElementByID('yourid').value</script>";
0
mit