HTML Selct value zu einer PHP Variable?


10.12.2021, 19:08

Eventuell hilft diese einfache Fragestellung weiter:

Ich möchte das value in die variable(PHP) $js packen und zwar als ganz gewöhnlicher String.

Dabei zubeachten ist das der USER nichts absenden soll sondern das das ändern des wertes $js passiert wenn sich die auswahl im select geändert hat deshalb onchange.

4 Antworten

erklärst du was du mit $js meinst ?

also wenn du mit deinem php das html baust willst du es dann dort einfügen ? oder willst du es nach senden übernehmen oder versuchst du gerade ganz falsch zu erklären das es eine javascript variable sein soll ? und sendet du das formular oder willst du im hintergrund via JavaScript das abfragen .

sorry aber dein gewurstel an frage , macht alle nur komplett unverständlich weil es mindestens 3 lösungen gibt, je nachdem was du eigentlich willst.

Tob210 
Fragesteller
 10.12.2021, 19:06

OK, sorry, versuche mich gerade selsbt durch alles durch zugraben. das $js was eine PHP Variable ist setht für json und word im folgenden gebraucht:

$json = file_get_contents("./i18n/" . $sj . ".json");;

$sprache = json_decode($json, true);

Fals das etwas hilft.

0

Ich denke, du solltest erst einmal verstehen, wie PHP funktioniert.

Wenn dein Webbrowser eine URL aufruft, wird ein Webserver angesprochen, der erst den PHP-Code interpretiert und danach das Ergebnis (sowie weitere notwendige Ressourcen, wie JavaScript-/CSS-Dateien) zurück an den Browser schickt. Der Browser wertet das Ergebnis aus, um es anzeigen / rendern zu können.

Das heißt, wenn der Nutzer Aktionen auf der Webseite tätigt, wurde dein PHP-Code schon lange zuvor ausgeführt. So lange keine erneute Anfrage an den Server gestellt wird, wird auch kein PHP-Code neu interpretiert.

Du musst also die Daten der Auswahlliste erst zum Server schicken. Ein Weg ist ein Formular, ein anderer ein Versand via AJAX/Fetch API. Letzteres könnte folgendermaßen bewerkstelligt werden:

<select id="trans" name="trans">
  <!-- ... -->
</select>
<script>
  document.getElementById("trans").addEventListener("change", evt => {
    const value = evt.currentTarget.value;
    fetch(`URL to some PHP script ...?value=${encodeURIComponent(value)}`)
      .then(response => response.text())
      .then(data => {
        /* do something ... */
      })
      .catch(error => console.error(error));
  });
</script>

Bei Änderung der Auswahl wird ein Request an ein PHP-Skript geschickt. In diesem kannst du den Parameter aus dem Querystring lesen, der mitgeliefert wurde.

$value = $_GET["value"];

Nach Verarbeitung dieses Werts (was immer du mit ihm vorhast), kannst du Daten an den Response hängen. Zum Beispiel HTML-Strings, o.ä.:

echo "<p>Success</p>";

Im Fetch Callback (data) sind diese Daten verfügbar. Du kannst sie also mit JavaScript auf deiner Seite verwerten (z.B. im DOM einfügen).

Tob210 
Fragesteller
 10.12.2021, 22:04

Danke für die Antwort, doch ich habe bereits einen weg gefunden, dieser mag unkonventionell sein, doch was erstmal funktioniert, funktioniert bis ich es wieder ändere. Also nochmals Danke und noch einen schönen Abend.

1

Wo ist this.value definiert?

Tob210 
Fragesteller
 10.12.2021, 18:59

Das habe ich nicht weiter definiert. Hat jedoch vor der einbindung des PHP Codes auch funktioniert. Muss allerdings dazu sagen ich weiß gerade gar nicht mehr wie es davor ausgesehen hat.

0
urbaneye413  10.12.2021, 19:01
@Tob210

  <select id="trans" name="trans" onchange="<?php $js = this.value ?>">

0
Tob210 
Fragesteller
 10.12.2021, 19:03
@urbaneye413

Ne da habe ich wohl this.value nicht richtig definiert bzw. gar nicht. Heute ist echt der wurm drin. Hat leider nicht verändert spuckt mir nur eine fehlermeldung aus.

0
regex9  10.12.2021, 19:43

Das Schlüsselwort this verweist auf das select-Element selbst, value ist folgendermaßen sein aktueller Wert. Da es sich um JavaScript-Code handelt, ist er in einem PHP-Block falsch.

0

So wie ich das sehe: Mit onchange kannst du eine Javascript Funktion ansteuern. Statt eine submit Lösung zu implementieren, kannst einen ajax request an ein php Script senden. Dieses php Script sendet dann eine Response zurück. Diesen Response kanst Du dann in das HTML Gerüst einbauen.

Woher ich das weiß:Berufserfahrung – Web Developer bei einem mittelständischen Portalbetreiber