138701
Goto Top

Zusammenarbeit von JS und PHP

Hallo zusammen,

Wie kann ich das machen:
<button onclick="<?php $button_clicked = true; ?>">Button<button>  

Oder das:
<script>
if (var == true) {
    <?php echo Test; ?>
}
</script>

Und das ohne POST und GET?

Content-ID: 509535

Url: https://administrator.de/contentid/509535

Ausgedruckt am: 24.11.2024 um 17:11 Uhr

tomolpi
tomolpi 28.10.2019 aktualisiert um 14:23:50 Uhr
Goto Top
Zitat von @138701:

Hallo zusammen,

Wie kann ich das machen:
<button onclick="<?php $button_clicked = true; ?>">Button<button>  
Garnicht auf diese Art. Eventuell machst du es über Cookies, du kannst keine Variablen zwischen PHP und JS teilen. Das sind doch komplett verschiedene Sprachen! Du kannst das nur mit "echo" machen...
Oder das:
<script>
> if (var == true) {
>     <?php echo Test; ?>
> }
> </script>
Volkommener Unsinn, du kannst doch nicht PHP und JS auf diese Art mischen. Der Compiler geht dqvonuaus, dass der Code plain JS ist und wird dir natürlich Fehler geben!
Und das ohne POST und GET?
Was?

Ich denke, du solltest dir einen komplett neuen Ansatz überlegen. So wird das nix.
Snowman25
Snowman25 28.10.2019 um 14:40:43 Uhr
Goto Top
Servus @138701,

PHP wird serverseitig interpretiert, bevor die Seite an den Enduser ausgeliefert wird.
JS wird auf dem Gerät des Endusers interpretiert und ausgeführt.

Deine Beispiele funtkionieren so also nicht.
Besonders dein 2tes Beispiel funktioniert nicht, da dieses so beim Client ankommt:
<script>
if (var == true) {
   Test
}
</script>
VORSICHT: var ist ein reserviertes keyword in JS und kann nicht als Variablenname verwendet werden!
Nutzt du stattdessen einen erlaubten Variablennamen:
ReferenceError: Test is not defined

Was du allerdings machen kannst, ist, per Ajax PHP-Inhalte nachzuladen und in deine Seite einzubinden.
Beispiele wie das funktioniert, solltest du online genug finden, wenn du nach PHP und Ajax suchst. Zum Beispiel hier: w3schools: PHP - AJAX and PHP

Schönen Gruß,
@Snowman25
wiesi200
wiesi200 28.10.2019 um 15:42:36 Uhr
Goto Top
Hallo,

das geht nicht mit PHP wie schon geschrieben mit JS


https://www.w3schools.com/jquery/jquery_dom_set.asp
Arano
Lösung Arano 28.10.2019 aktualisiert um 19:32:52 Uhr
Goto Top
Hallo Ileies

<button onclick="<?php $button_clicked = true; ?>">Button<button>  
Und das ohne POST und GET?
Wie Snowman25 ja schon so schön beschrieben hat, werden diese beiden Sprachen an unterschiedlichen Orten interpretiert. Darüber musst du dir im klaren sein und dir einen passende "Tacktick" überlegen.
Und noch was ! Du erwartest hier einen Art Interaktion zwischen dem "Interface/Webseite/HTML" und dem Backend/Server/PHP. Das ist so direkt nicht möglich. Wenn du im Webbrowser einen Webseite aufrufst, dann sucht der Webserver nach der passenden "Datei" und sendet sie zurück. Request und Response. Wenn es sich bei der Datei um eine PHP-Datei handelt wird diese erst noch durch den PHP-Interpreter geschickt der das ganze PHP-Gedöns abarbeitet (sofern der Server so koniguriert ist). Und alles was nun z.B. per "echo" ausgegeben wurde wird dan "als Datei" an den Webbrowser geschickt.
Im Falle dieses Buttons müssten wir eigentlich wissen was du vor hast wenn "$button_clicked" auf TRUE gesetzt wird. Aber ich hau mal einfach was raus:

Nach dem Klick auf den Button soll ein entsprechender Text angezeigt werden.

Da der Klick auf den Button so nicht funktioniert muss es anders gehen. AJAX wäre eine Möglichkeit (ist auch Javascript und auch POST o. GET) aber erst die Basics.
In HTML macht man das mit Formularen <form></form> diese werden abgeschickt(an den Server) und übertragen Ihre Felder&Werte, diese kann man dan Serverseitig auswerten und eine entsprechende Antwort zurücksenden.
Im folgenden Code MIXE ich das HTML, Javascript und PHP in einer Datei zusammen.
<?php
  // hier haben wir zuerst den PHP-Teil für die Auswertung.
  // Bei diesem Aufbau darf PHP-Allerdings nichts ausgeben da dieses als erstes an den Client zurück geschcikt werden würde.
  // Daher speichere ich das in Variablen auf die später noch zugegriffen wird.
  
  $text = 'kein Button';  
  if( isset($_POST['sendbutton1']) )  
  {
  	// Das Formular wurde geschikt bzw. der Button geklickt.
  	$text = 'Das war Senden 1';  
  }
  
  
  if( isset($_POST['sendbutton2']) )  
  {
  	// Das Formular wurde geschikt bzw. der Button geklickt.
  	$text = 'Und das der Zweite';  
  }
?>
<!DOCTYPE html>
<html>
  <head>
    <title>Testform für Ileies</title>
  </head>
  <body>
  
    <form action=",/ileies.php" method="POST">  
      <input type="submit" name="sendbutton1" value="Absenden 1">  
      <input type="submit" name="sendbutton2" value="Absenden 2">  
    </form>
    <!-- hier kommt noch ein PHP-Teil, mitten in das HTML -->
    <p><?php echo $text; ?></p>
    
    
    <br><br><br>
    
    
    <p>
      <script type="text/javascript">  
        <!--
          // Change me !!!
          	var fix = true;
          	//var fix = false;
          // Change me !!!
          
          if( fix==true )
          {
          	document.write("<?php echo $text ?>"); 
          }
          else
          {
          	document.write("fix ist nicht true"); 
          }
        -->
      </script>
    </p>
    
  </body>
</html>



~Arano
Arano
Arano 28.10.2019 um 19:32:31 Uhr
Goto Top
Hallo

Was du allerdings machen kannst, ist, per Ajax PHP-Inhalte nachzuladen und in deine Seite einzubinden.
Das sind doch auch POSt- und GET-Requests.


~Arano
138701
138701 28.10.2019 um 20:33:18 Uhr
Goto Top
Das weiß ich alles schon.
Mir ging es darum, ob jemand von euch vielleicht etwas weiß, was ich nicht weiß.
Wie man es eben möglich macht, dass JS und PHP zusammenarbeiten.
Auf w3schools habe ich alles durchgekaut.

Und es ging darum, dass die Seite nicht jedes mal aktualisiert wird, wenn ich eine Aktion ausführe.
Und die Aktion muss nicht onclick sein.
138701
138701 28.10.2019 um 20:37:20 Uhr
Goto Top
Mein Ziel ist, ein komplexes Spiel mit PHP zu programmieren, das man immer und überall mit wenig Internet spielen kann. Thema darin sind keine Grafiken sondern Aktionen. Bis jetzt klappt alles wunderbar nur die Zusammenarbeit von PHP und JavaScript würde vieles erleichtern
Snowman25
Snowman25 29.10.2019 aktualisiert um 00:00:58 Uhr
Goto Top
Wenn du ein Spiel machen möchtest, kann ich dir nur empfehlen, es gleich in HTML5 umzusetzen.
wiesi200
Lösung wiesi200 29.10.2019 um 06:54:24 Uhr
Goto Top
Ok, dann aber bitte nächstes mal die Frage kpl. stellen.

Grundsätzlich währ dein Ablauf so.

Rufst ne Seite auf.
Druckst einen Button dieser holt dann mit Javascript per Ajax von deinem Backend (egal ob js.node oder PHP) über Post oder Get Daten.
Diese Daten können jetzt in JSON codiert sein oder gleich fertig aufbereites HTML.
Damit manipulierst du dann wieder Clientseitig per Javascript deine Seite nach bedarf.

So einfach ist das. Und das findest du auch auf w3schools. Vermutlich nur kein zusammenhängendes Beispiel das du einfach kopieren kannst.
https://www.w3schools.com/jquery/jquery_ajax_intro.asp

Also noch mal zurück zu Schulbank.
138701
138701 02.11.2019 um 12:42:55 Uhr
Goto Top
Ich habe jetzt eine Lösung gefunden:

Cookies.

Die können sowohl mit JS als auch mit PHP generiert werden und mit hoher Geschwindigkeit viel Inhalt übermitteln.