Henry: Java-Script Variablen mit PHP setzen

Hallo,

ich hab leider so gut wie keine Programmierkenntnisse, habe dennoch eine Frage zum nachfolgenden Quellcode. Wäre toll wenn ihr etwas Nachsicht walten last :-).

Nachfolgend ein Java-Script Code-Schnipsel mit einigen Variablen. Diese Variablen müssten dynamisch durch die tatsächlichen Werte ersetzt werden. Kurzum ich möchte irgendwie erreichen, dass die ???? durch tatsächliche Werte ersetzt werden.

Die Fage ist wie ich hier am besten vorgehe. Nutze ich dazu PHP?

<script>
dataLayer = [{
    'transactionId': '????',
    'transactionTotal': ????, 
    'transactionProducts': [{
        'name': '????',
	'sku': '????',
        'category': '????',
        'price': ????,
        'quantity': ????
    },{
        'name': '????',
	'sku': '????',
        'category': '????',
        'price': ????,
        'quantity': ????
    }]
}];
</script>
  1. Hallo,

    Nachfolgend ein Java-Script Code-Schnipsel mit einigen Variablen. Diese Variablen müssten dynamisch durch die tatsächlichen Werte ersetzt werden. Kurzum ich möchte irgendwie erreichen, dass die ???? durch tatsächliche Werte ersetzt werden.

    Die Fage ist wie ich hier am besten vorgehe. Nutze ich dazu PHP?

    um dir selbst diese frage zu beantworten, solltest du den unterschied zwischen den beiden sprachen javascript/php und ihren wirkungsort kennen: javascript agiert als client-sprache stets beim user, wenn die variablen also userspezifisch sind, müssen sie auch dort gesetzt werden. php dagegen ist eine serversprache, dh. wenn deine variablen zb. contentabhängig sind und bspw. aus einer datenbank stammen, sprich die daten auf dem server liegen oder generiert werden, dann sind sie über php zu setzen.

    bye trunx

    --
    Die Standard-Antwort: "Bitte benutze die Forum-Suche!" macht die Forum-Suche kaputt, weil die Suche dann nämlich genau vor allem diese dämliche Standard-Antwort, also Müll liefert. Sinnvoller ist stattdessen folgende Standard-Antwort: "Dieses Thema wurde schon vielfach im Forum besprochen, siehe z.B. <a>hier</a> oder <a>da</a> oder benutze die Forum-Suche z.B. mit den Stichworten 'Stichwort1 Stichwort2'." Danke.
  2. Hallo,

    ich hab leider so gut wie keine Programmierkenntnisse, habe dennoch eine Frage zum nachfolgenden Quellcode. Wäre toll wenn ihr etwas Nachsicht walten last :-).

    Nachfolgend ein Java-Script Code-Schnipsel mit einigen Variablen. Diese Variablen müssten dynamisch durch die tatsächlichen Werte ersetzt werden. Kurzum ich möchte irgendwie erreichen, dass die ???? durch tatsächliche Werte ersetzt werden.

    Die Fage ist wie ich hier am besten vorgehe. Nutze ich dazu PHP?

    Du möchtest die ganze Seite als Template ausliefern. D.h., vor dem Ausliefern der Seite werden serverseitig die Platzhalter im Template zum Leben erweckt. Ob das mit PHP oder einer anderen PL erfolgt, ist eine zweitrangige Frage.

    mfg

  3. Tach!

    Nachfolgend ein Java-Script Code-Schnipsel mit einigen Variablen. Diese Variablen müssten dynamisch durch die tatsächlichen Werte ersetzt werden. Kurzum ich möchte irgendwie erreichen, dass die ???? durch tatsächliche Werte ersetzt werden.

    Die Fage ist wie ich hier am besten vorgehe. Nutze ich dazu PHP?

    Wenn die Daten serverseitig vorliegen, dann kommt PHP oder irgendeine andere serverseitige Technik infrage. Allerdings würde ich nicht das Javascript-Array/Objekt selbst zusammenbasteln, sondern ein PHP-Array/Objekt erstellen und json_encode() bemühen. Dann werden auch gleich alle kritischen Zeichen ordnungsgemäß maskiert.

    dedlfix.

    1. Wenn die Daten serverseitig vorliegen, dann kommt PHP oder irgendeine andere serverseitige Technik infrage. Allerdings würde ich nicht das Javascript-Array/Objekt selbst zusammenbasteln, sondern ein PHP-Array/Objekt erstellen und json_encode() bemühen. Dann werden auch gleich alle kritischen Zeichen ordnungsgemäß maskiert.

      Die Daten liegen serverseitig vor!

      Was genau mach denn diese json_encode(), wandelt das PHP in JS um?

      Hört sich ziemlich gut an was du da schreibst, leider hab ich nicht die großen Programmierkenntnisse. Mit PHP kenne ich mich garnicht aus. Kannst du mir vielleicht ein kleines Quellcode Beispiel dazu geben, wie der Code Serverseitig aussehen müsste damit Clientseitig das rauskommt was ich haben möchte.

      Das wäre echt prima :-).

      1. Tach!

        Was genau mach denn diese json_encode(), wandelt das PHP in JS um?

        Das ist im PHP-Handbuch beschrieben. Das wandelt PHP-Daten(strukturen) in JSON-Notation um, was im Grunde Javascript-Syntax ist.

        Hört sich ziemlich gut an was du da schreibst, leider hab ich nicht die großen Programmierkenntnisse.

        Das ist nicht von Vorteil, wenn man was programmieren möchte.

        Mit PHP kenne ich mich garnicht aus. Kannst du mir vielleicht ein kleines Quellcode Beispiel dazu geben, wie der Code Serverseitig aussehen müsste damit Clientseitig das rauskommt was ich haben möchte.

        Du baust dir ein verschachteltes Array zusammen, das genauso aussieht, wie das was du als Javascript haben möchtest. Mit folgenden Besonderheiten: Was in JS ein Array ist [], ist in PHP ein auch ein Array, dessen Elemente ohne weiteres nacheinander eingefügt sind. Was in JS als Objekt entstehen soll, ist in PHP ein so genanntes assoziatives Array. Letzteres zeigt das erste Beispiel im PHP-Handbuch.

        Diese Struktur übergibst du json_encode() und schaust dir an, was dabei rauskommt. Gegebenenfalls muss noch mit einer der Optionen dieser Fuktion nachjustiert werden.

        dedlfix.

        1. Du baust dir ein verschachteltes Array zusammen, das genauso aussieht, wie das was du als Javascript haben möchtest. Mit folgenden Besonderheiten: Was in JS ein Array ist [], ist in PHP ein auch ein Array, dessen Elemente ohne weiteres nacheinander eingefügt sind. Was in JS als Objekt entstehen soll, ist in PHP ein so genanntes assoziatives Array. Letzteres zeigt das erste Beispiel im PHP-Handbuch.

          Diese Struktur übergibst du json_encode() und schaust dir an, was dabei rauskommt. Gegebenenfalls muss noch mit einer der Optionen dieser Fuktion nachjustiert werden.

          Habs mal probiert, ist das so richtig oder gibt es noch technische und/oder Syntaxfehler?

          <?php
          	<script>
          		dataLayer = [{
          		
          			'transactionId': '$transactionId',
          			'transactionTotal': $transactionTotal, 
          			
          			$transactionProducts = transactionProducts
          			(
          				for($a = 1; $a <= $anzahlProduke; $a++)
          				{
          					arrayProduktAttribute('name' => $name[$a], 
                                                                        'sku' => $sku[$a], 
                                                                        'category' => $category[$a], 
                                                                        'price' => $price[$a], 
                                                                        'quantity' => $quantity[$a]);
          				}
          			);
          			
          			echo json_encode($transactionProducts);
          		}];
          	</script>
          ?>
          
          1. Tach!

            Habs mal probiert, ist das so richtig oder gibt es noch technische und/oder Syntaxfehler?

            Vorgehensweise beim Programmieren:

            • Aufgabe überdenken, Code schreiben
            • laufen lassen
            • Gibts keine Fehler, hat man garantiert irgendwas anderes verkehrt gemacht. (Das ist eine Gesetzmäßigkeit, gegen die man nichts tun kann.)
            • schauen, ob Fehler im Ergebnis sind
            • Fehlerursache finden und wieder oben anfangen.

            Du bist gerade erst nach dem ersten Schritt.

            <?php
            	<script>
            

            <?php leitet einen PHP-Code-Bereich ein. <script> ist kein PHP-Code, das ist HTML und hat im PHP-Bereich nicht zu suchen. Das gibt nur einen Syntaxfehler.

            dedlfix.

            1. Vorgehensweise beim Programmieren:

              • Aufgabe überdenken, Code schreiben

              hab ich ja gemacht :-)

              • laufen lassen

              Ich kann es leider nicht testen, weil ich keinen direkten Zugriff auf den Server habe. Ich werde den Code sobald er halbwegs passt einem Bekannten weiterleiten. Kann ich das vielleicht irgendwie lokal auf dem Rechner testen ohne es durch meinen Bekannten auf den Server hochladen zu müssen. Möchte bevor ich es weiterleite zumindest einen halbwegs korrekten Code was Logik und Syntax betrifft haben?

              <?php leitet einen PHP-Code-Bereich ein. <script> ist kein PHP-Code, das ist HTML und hat im PHP-Bereich nicht zu suchen. Das gibt nur einen Syntaxfehler.

              Habs mal überarbeitet, ist das jetzt so besser? Würde das gerne irgendwie lokal testen bezogen auf Logik und Syntax, weiß aber nicht wie. Hast du einen Tipp?

              <script>
              	dataLayer = [{
              		'transactionId': '<?php $transactionId ?>',
              		'transactionTotal': <?php $transactionTotal ?>, 
              		'transactionProducts':
              		
              		<?php
              			$transactionProductsArray = transactionProducts
              			(
              				for($a = 1; $a <= $anzahlProduke; $a++)
              				{
              				arrayProduktAttribute(
                                                       'name' => $name[$a], 
                                                       'sku' => $sku[$a], 
                                                       'category' => $category[$a],                                
                                                       'price' => $price[$a], 
                                                       'quantity' => $quantity[$a]);
              				}
              			);
              			
              			json_encode($transactionProductsArray);
              		?>	
              	}];
              </script>
              
              1. Hallo,

                Habs mal überarbeitet, ist das jetzt so besser? Würde das gerne irgendwie lokal testen bezogen auf Logik und Syntax, weiß aber nicht wie. Hast du einen Tipp?

                das sind ungünstige Vorausssetzungen, die du da hast. Kennst du eigentlich das Wiki?

                Gruß
                Kalk

                PS: ich lass mal das Dreifach-s drinne, als Ausgleich für die vielen Einfach-s in dem Wort...

              2. Tach!

                Würde das gerne irgendwie lokal testen bezogen auf Logik und Syntax, weiß aber nicht wie. Hast du einen Tipp?

                Es gibt da zum Beispiel den Xampp.

                <script>
                	dataLayer = [{
                		'transactionId': '<?php $transactionId ?>',
                		'transactionTotal': <?php $transactionTotal ?>, 
                

                Du hast da eine Variable in einen PHP-Block geschrieben. Und nun? Was soll denn mit der Variable passieren? Einfach so gibt sie ihren Inhalt nicht aus. Da fehlt noch sowas wie echo.

                Zudem kann das, so wie du das notiert hast, zu Fehlern (auch sicherheitskritischen) führen. $transactionId darf keine ' enthalten, sonst gibt das mindestens einen Syntaxfehler auf der Javascript-Seite. $transactionTotal scheint eine Zahl zu sein. Wenn dem nicht so ist, führt das Weglassen der Anführungszeichen erst recht zu einem Fehler.

                Ich würde nicht nur den nachfolgenden Teil sondern alles als Datenstruktur in PHP abbilden und diese dann komplett durch json_encode() schicken.

                			$transactionProductsArray = transactionProducts
                			(
                				for($a = 1; $a <= $anzahlProduke; $a++)
                

                Was bezweckst du denn damit? Das ist überhaupt kein gültiger PHP-Code. Wenn du das Problem allein lösen möchtest, solltest du dir zumindest die Grundlagen von PHP in einem Tutorial erarbeiten. (Ich kenne keins, aber da sind bestimmt welche in unserem Wiki verlinkt.)

                			json_encode($transactionProductsArray);
                

                json_encode() gibt sein Ergebnis zurück. Das landet nicht automatisch in der Ausgabe. Du must da auch wieder echo verwenden.

                Noch'n kluger Spruch: Die Teile einer Programmiersprache oder Funktionssammlung machen (abgesehen von Fehlern) nur das, was dokumentiert ist, und was man ihnen ausdrücklich sagt. Sie machen nicht, was man selbst denkt, dass sie es machen könnten, nur weil man grade diese Funktionalität braucht.

                dedlfix.

                1. Tach!

                  Würde das gerne irgendwie lokal testen bezogen auf Logik und Syntax, weiß aber nicht wie. Hast du einen Tipp?

                  Es gibt da zum Beispiel den Xampp.

                  Ich habe Xampp installiert. den Apache auf Port 8080 gestartet, weil 80 wohl schon irgendwie belegt war. Nachdem Apache gestartet war hab ich auf "Admin" geklickt.

                  Ich erhalte die Fehlermeldung:

                  HTTP Error 404. The requested resource is not found.

                  Hast du ne Ahnung was ich falsch mache?

                  1. Tach!

                    Ich habe Xampp installiert. den Apache auf Port 8080 gestartet, weil 80 wohl schon irgendwie belegt war.

                    Vermutlich Skype, das hängt sich gern auf Port 80, wenn man es nicht daran hindert. Das lauscht da ziemlich sinnfrei, wenn man nicht auch noch ein Portforwarding auf seinem Router einrichtet.

                    Nachdem Apache gestartet war hab ich auf "Admin" geklickt.
                    Ich erhalte die Fehlermeldung:
                    HTTP Error 404. The requested resource is not found.
                    Hast du ne Ahnung was ich falsch mache?

                    Nö, vermutlich wird man dir da im Xampp-Forum besser weiterhelfen könenn, den wenigstens grundlegend inklusive PHP (Testdatei mit <? phpinfo(); ) zum Laufen zu bringen.

                    dedlfix.

                    1. Vermutlich Skype, das hängt sich gern auf Port 80, wenn man es nicht daran hindert. Das lauscht da ziemlich sinnfrei, wenn man nicht auch noch ein Portforwarding auf seinem Router einrichtet.

                      Einmal hatte ich Probleme wegen Port 443 und einmal wegen Port 80. Für 443 war tatsächlich Skype verantwortlich, für 80 hingegen nicht, da auch nach dem beenden von Skype noch kein Start möglich war, deshalb habe ich auf 8080 umgestellt.

                      Nachdem Apache gestartet war hab ich auf "Admin" geklickt.
                      Ich erhalte die Fehlermeldung:
                      HTTP Error 404. The requested resource is not found.
                      Hast du ne Ahnung was ich falsch mache?

                      Nö, vermutlich wird man dir da im Xampp-Forum besser weiterhelfen könenn, den wenigstens grundlegend inklusive PHP (Testdatei mit <? phpinfo(); ) zum Laufen zu bringen.

                      Deine Vermutung war richtig, danke für den Tipp. Ich habe zwar auf 8080 umgestellt dem Control Panel aber nicht gesagt das es zukünftig auf 8080 suchen soll. Nachdem ich auch das Control Panel auf 8080 umgestellt habe klappt alles tadellos :-).