Macavity: PHP Variable in Javascript

Ich wollte in ein Javascript eine PHP Variable einfügen wie folgt:

<script language="JavaScript" type="text/javascript">
document.getElementById("<?php echo $row_Recordset1['Wunsch'];?>").style.visibility = "visible";
</script>

Was ist da falsch? Das Element wird nicht sichtbar geschaltet.
Danke für Tipps!
Mac

  1. Was ist da falsch? Das Element wird nicht sichtbar geschaltet.

    du hast die Fehlermeldung nicht beachtet.

    Struppi.

    --
    Javascript ist toll (Perl auch!)
    1. du hast die Fehlermeldung nicht beachtet.

      Es gab keine Fehlermeldung!

      Mac

      1. du hast die Fehlermeldung nicht beachtet.
        Es gab keine Fehlermeldung!

        muss aber.

        Struppi.

        --
        Javascript ist toll (Perl auch!)
      2. Hallo Maccavity
        hmmm, welchen Browser benutzt du denn?

        Firefox: Kennst du die Javascript Konsole? Unter Extras -> Fehler-Konsole (zumindest im FF 2.0, aber auch in früheren Versionen sollte sie irgendwo unter extras zu finden sein)

        IE: Hast du links unten in der Statusleiste ein kleines icon? (so ein gelbes Dreieck mit Ausrezeichen)? Falls ja, klick da mal drauf.

        Liebe Grüße

        mbr

  2. Hi,

    Subject: PHP Variable in Javascript

    es gibt nur _entweder_ PHP _oder_ JavaScript. Unter keinen Umständen ist es möglich, dass diese beiden Techniken ein gemeinsames Thema bilden.

    Ich wollte in ein Javascript eine PHP Variable einfügen wie folgt:

    Irrelevant.

    document.getElementById("<?php echo $row_Recordset1['Wunsch'];?>").style.visibility = "visible";

    Wie lautet der hieraus resultierende JavaScript-Code?

    Was ist da falsch?

    Die Vermutung, man könne JavaScript und PHP in irgend einer Form vermischen.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Was ist da falsch?

      Die Vermutung, man könne JavaScript und PHP in irgend einer Form vermischen.

      Auf die Ide bin ich dadurch gekommen:
      http://www.drweb.de/programmierung/javascript_php.shtml
      Es muss also doch irgendwie gehen!
      Mac

      1. Hi there,

        Es muss also doch irgendwie gehen!

        Ja, klar gehts. Schau einmal nach, was dort steht. Wenn deine PHP-Variable einen sinnvollen Wert für Deine ID liefert, dann mußt Du das ja im sourcecode sehen können. Wenn dort ein Wert steht, den Du Dir erwartest, dann hast Du ein Javascript-Problem. Wenn dort allerdings ein Wert steht, der keinen Sinn macht oder gar nichts dort steht, dann hast Du ein PHP-Problem.

        Vermutlich ist es das, was Dir Cheatah in seiner kindlich weltverbesserlichen Art mitteilen wollte...

        1. Ja, klar gehts. Schau einmal nach, was dort steht. Wenn deine PHP-Variable einen sinnvollen Wert für Deine ID liefert, dann mußt Du das ja im sourcecode sehen können. Wenn dort ein Wert steht, den Du Dir erwartest, dann hast Du ein Javascript-Problem. Wenn dort allerdings ein Wert steht, der keinen Sinn macht oder gar nichts dort steht, dann hast Du ein PHP-Problem.

          Vermutlich ist es das, was Dir Cheatah in seiner kindlich weltverbesserlichen Art mitteilen wollte...

          Naja, er hat doch 100% das Gleiche wie du geschrieben.

          Struppi.

          --
          Javascript ist toll (Perl auch!)
          1. Hi there,

            Naja, er hat doch 100% das Gleiche wie du geschrieben.

            Hat er nicht. Mag sein, daß er das Gleiche gemeint hat. Das ist aber in seinem krampfhaften Versuch, den Originalposter zu verwirren, leider komplett untergegangen...

            1. Naja, er hat doch 100% das Gleiche wie du geschrieben.

              Hat er nicht. Mag sein, daß er das Gleiche gemeint hat. Das ist aber in seinem krampfhaften Versuch, den Originalposter zu verwirren, leider komplett untergegangen...

              [C]es gibt nur _entweder_ PHP _oder_ JavaScript. Unter keinen Umständen ist es möglich, dass diese beiden Techniken ein gemeinsames Thema bilden.
              [K]... dann hast Du ein Javascript-Problem. Wenn dort allerdings ein Wert steht, der keinen Sinn macht oder gar nichts dort steht, dann hast Du ein PHP-Problem.

              Je nach Wissensstand des OP ist beides verwirrend.

              [C]Wie lautet der hieraus resultierende JavaScript-Code?
              [K]Wenn deine PHP-Variable einen sinnvollen Wert für Deine ID liefert, dann mußt Du das ja im sourcecode sehen können.

              Da finde ich eindeutig deine Aussage verwirrdender, den Sourcecode hat er uns bereits gezeigt.

              [C]Die Vermutung, man könne JavaScript und PHP in irgend einer Form vermischen.
              [K]...Wenn dort allerdings ein Wert steht, der keinen Sinn macht oder gar nichts dort steht, dann hast Du ein PHP-Problem.

              Du beschreibst es blumiger, aber letztlich kommt Cheatah auf den Punkt.

              Also ich weiß nicht, wer da jetzt verwirrender ist, es ist auf jeden Fall 100% das gleiche und sollte beides verständlich sein.

              Struppi.

              --
              Javascript ist toll (Perl auch!)
              1. Hi there,

                Also ich weiß nicht, wer da jetzt verwirrender ist...

                Vielleicht möchte sich ja der Originalposter dazu äussern, um Klarheit in diese Angelegenheit zu bringen...;)

                1. Richtig. Ich bin etwas verwirrt.
                  Es muss doch eine Möglichkeit geben, einen aus einer MySQL Datenbank ausgelesenen Wert and javascript zu übergeben.
                  Je nachdem Welcher Wert ausgelesen wird soll Funktion a(), Funktion b()oder Funktion c() gestartet werden.
                  Mac

                  1. Erfolg! Erfolg!
                    Mit
                    <?PHP
                    echo "<script language='JavaScript' type='text/JavaScript'>
                    var Wunsch1='".$row_Recordset1['Wunsch1']."';
                    var Wunsch2='".$row_Recordset1['Wunsch2']."';
                    </script>";
                    ?>
                    stehen die Variablen Wunsch1 und Wunsch 2 nunmehr in Javascript zur Verfügung. Jetzt fehlt mir nur noch der Trick wie ich die Funktionen variabel benennen kann. Sie sollen dann per
                    <body onload="Wunsch1(); Wunsch1()"> gestartet werden. Kann ich Funtionen überhaut variabel benennen?
                    Mac

                    1. Erfolg! Erfolg!

                      Du liest nicht, was man dir schreibt und empfiehlt?

                      <?PHP

                      Das der PHP Code für deine JS Fragen völlig belanglos ist, wurde hier schon mehrmals gesagt.

                      echo "<script language='JavaScript' type='text/JavaScript'>
                      var Wunsch1='".$row_Recordset1['Wunsch1']."';
                      var Wunsch2='".$row_Recordset1['Wunsch2']."';
                      </script>";
                      ?>
                      stehen die Variablen Wunsch1 und Wunsch 2 nunmehr in Javascript zur Verfügung. Jetzt fehlt mir nur noch der Trick wie ich die Funktionen variabel benennen kann.

                      Wieso wilst du Funktionen variabel bennen? Es gibt möglichkeinte, aber in deinem Ausgangsposting ging es um etwas komplett anderes.

                      Struppi.

                      --
                      Javascript ist toll (Perl auch!)
                      1. Wieso wilst du Funktionen variabel bennen? Es gibt möglichkeinte, aber in deinem Ausgangsposting ging es um etwas komplett anderes.

                        Nach dem Frust mit PHP habe ich jetzt die Visibility der <div> elemente per javascript funtion gesteuert:
                        function Wunsch1(){
                        document.getElementById("Wunsch1").style.visibility = "visible";
                        document.getElementById("Wunsch2").style.visibility = "hidden";
                        ...
                        }
                        function Wunsch2(){
                        document.getElementById("Wunsch1").style.visibility = "hidden";
                        document.getElementById("Wunsch2").style.visibility = "visible";
                        ...
                        }
                        etc. (insgesamt 6 Funtionen)
                        Nun soll beim Laden jeweils die Funktion aufgerufen werden, die das entsprechende Element sichtbat macht und die anderen unsichtbar.
                        Mac

                        1. Wieso wilst du Funktionen variabel bennen? Es gibt möglichkeinte, aber in deinem Ausgangsposting ging es um etwas komplett anderes.

                          Nach dem Frust mit PHP habe ich jetzt die Visibility der <div> elemente per javascript funtion gesteuert:
                          function Wunsch1(){
                          document.getElementById("Wunsch1").style.visibility = "visible";
                          document.getElementById("Wunsch2").style.visibility = "hidden";
                          ...
                          }
                          function Wunsch2(){
                          document.getElementById("Wunsch1").style.visibility = "hidden";
                          document.getElementById("Wunsch2").style.visibility = "visible";
                          ...
                          }

                          du kennst das Prinzip der Funktion und des Funktionsparameter?

                          function Wunsch(aus, an){
                          document.getElementById(aus).style.visibility = "hidden";
                          document.getElementById(an).style.visibility = "visible";
                          }

                          Aber auch so, ich weiß nicht wie du PHP Programmierst, aber so nachlässig sollte man in keiner Programmiersprache programmieren. Man sollte immer testen was man verwenden will.

                          function Wunsch(aus, an)
                          {
                          if(!document.getElementById) return; // alter Browser
                          if(!aus || !an) return; // ungültiger Parameter
                          var o1 = document.getElementById(aus);
                          var o2 = document.getElementById(an);
                          if(o1) o1.style.visibility = "hidden";
                          if(o2) o2.style.visibility = "visible";
                          }

                          Struppi.

                          --
                          Javascript ist toll (Perl auch!)
                          1. Aber auch so, ich weiß nicht wie du PHP Programmierst, aber so nachlässig sollte man in keiner Programmiersprache programmieren. Man sollte immer testen was man verwenden will.

                            Rüffel angekommen. Ich wil mich ja auch bessern, aber wie du ja gemerkt hast stecke ich hier noch ziemlich in den Kinderschuhen. Ich bin bei uns halt der einzige, der überhaupt eine blasse Ahnung davon hat und drum hat es mich getroffen dieses Programm zu versuchen.
                            Ich habe es nach deiner Vorlage jetzt mal so probiert:
                            (Wunsch2 ist dabei die Variable, die ich aus der Datenbank ausgelesen habe)

                            function Wunsch()
                            {
                            if(!document.getElementById) return; // alter Browser
                            var Wuensche = new array ("w1", "w2", "w3", "w4", "w5", "w6", "w7")
                            for (var i=0; i<7; i++){
                            if (Wunsch2 == Wuensche[i]) {
                            var o1 = document.getElementById(Wuensche[i]);} else {
                            var o2 = document.getElementById(Wuensche[i]);}
                            if(o1) o1.style.visibility = "hidden";
                            if(o2) o2.style.visibility = "visible";
                            }
                            }
                            Aber es erscheint im IE immer noch die Meldung "Fehler auf der Seite" und das ein/aus klappt auch noch nicht

                            1. Hallo,

                              (Wunsch2 ist dabei die Variable, die ich aus der Datenbank ausgelesen habe)

                              und wie kommt die in dein Javascript - speziell in die Funktion? Du übergibst deiner Funktion immern och keinen Parameter, sondern greifst vermutlich auf die globale Variable Wunsch2 zu. Das ist unsauberer Stil. Man sollte immer versuchen, Daten innerhalb von Funktionen zu kapseln (also lokale Variablen zu verwenden), und die Daten, die man von außerhalb braucht, als Argument zu übergeben.

                              if (Wunsch2 == Wuensche[i]) {

                              Es ist also sichergestellt, dass Wunsch2 hier existiert?
                              Davon abgesehen ist deine Programmlogik sehr kompliziert. Formuliere doch einfach den Gedanken: Wenn Wunsch2 imt Wuensche[i] übereinstimmt, dann setze die visibility-Eigenschaft des betreffenden Elements auf "visible", sonst auf hidden. Ganz kurz und prägnant also z.B.

                              ~~~javascript for (i=0; i<7; i++)
                                { document.getElementById(Wuensche[i]).style.visibility = (Wunsch2==Wuensche[i] ? "visible" : "hidden");
                                }

                                
                              
                              > Aber es erscheint im IE immer noch die Meldung "Fehler auf der Seite"  
                                
                              Und \*welche\* Fehlermeldung? In welcher Zeile des Scripts? Ich vermute, dass es mit deiner schwer durchschaubaren Abfolge von Zuweisungen zu tun hat.  
                                
                              Ciao,  
                               Martin  
                              
                              -- 
                              Um die Wahrheit zu erfahren, muss man den Menschen widersprechen.  
                                (George Bernhard Shaw)
                              
                              1. Es ist also sichergestellt, dass Wunsch2 hier existiert?

                                Ich ahbe das so gelöst:
                                <?PHP
                                echo "<script language='JavaScript' type='text/JavaScript'>
                                var Wunsch1='".$row_Recordset1['Wunsch1']."';
                                var Wunsch2='".$row_Recordset1['Wunsch2']."';
                                </script>";
                                ?>
                                Das klappt auch, zumindets wird der Wert in document.write(Wunsch1+" "+Wunsch2) korrekt ausgegeben.

                                Ganz kurz und prägnant also z.B.

                                for (i=0; i<7; i++)

                                { document.getElementById(Wuensche[i]).style.visibility = (Wunsch2==Wuensche[i] ? "visible" : "hidden");
                                  }

                                  
                                Danke für das script. Auch das hat leider nicht den gewünschten Erfolg gehabt.  
                                  
                                
                                > Und \*welche\* Fehlermeldung?  
                                
                                Das ist lediglich eine allgemeine Fehlermeldung in der Fußleiste des IE.  
                                 Könnte mit meinem array irgenwas nicht stimmen? Wenn ich nämlich das funktionsunabhängige script  
                                 ~~~javascript
                                var Wuensche = new array ("w1", "w2", "w3", "w4", "w5", "w6", "w7")  
                                for (i=0; i<7; i++){  
                                document.write(Wuensche[i]);  
                                }
                                ~~~eingebe, wird nichts augegeben.  
                                Danke für eventuelle Tipps  
                                Mac
                                
                                1. Hi,

                                  Ganz kurz und prägnant also z.B.

                                  for (i=0; i<7; i++)

                                  { document.getElementById(Wuensche[i]).style.visibility = (Wunsch2==Wuensche[i] ? "visible" : "hidden");
                                    }

                                  
                                  > Danke für das script. Auch das hat leider nicht den gewünschten Erfolg gehabt.  
                                    
                                  dann habe ich deinen gesamten Kontext immer noch nicht verstanden, oder du hast irgendwo noch einen anderen Bock drin.  
                                    
                                  
                                  > > Und \*welche\* Fehlermeldung?  
                                  > Das ist lediglich eine allgemeine Fehlermeldung in der Fußleiste des IE.  
                                    
                                  Ja klar, aber die wartet ja nur drauf, dass man die \*tatsächlichen\* Fehlermeldungen mit einem Doppelklick auf diese Statusanzeige abruft.  
                                    
                                  
                                  >  Könnte mit meinem array irgenwas nicht stimmen? Wenn ich nämlich das funktionsunabhängige script  
                                  >  ~~~javascript
                                  
                                  var Wuensche = new array ("w1", "w2", "w3", "w4", "w5", "w6", "w7")  
                                  
                                  > for (i=0; i<7; i++){  
                                  > document.write(Wuensche[i]);  
                                  > }
                                  
                                  ~~~eingebe, wird nichts augegeben.  
                                    
                                  Doch, mindestens wieder eine Fehlermeldung. Welche? Wo?  
                                  Übrigens ist schon allein die schwerfällige Art, Fehlermeldungen anzuzeigen, ein ausreichender Grund, zum Testen \*nicht\* den IE zu verwenden. Der Wortlaut der Fehlermeldungen, der meistens erst dem Fachmann wirklich weiterhilft, ist ein anderer. Die Javascript-Konsole von Opera oder Firefox ist da nicht nur gesprächiger, sondern auch informativer.  
                                    
                                  Übrigens, ich sehe es jetzt erst: Du möchtest den Konstruktor des Array-Objekts bestimmt mit einem großen Anfangsbuchstaben schreiben ...  
                                    
                                  Ciao,  
                                   Martin  
                                  
                                  -- 
                                  Paradox ist, wenn jemand eingefleischter Vegetarier ist.
                                  
                                  1. Übrigens, ich sehe es jetzt erst: Du möchtest den Konstruktor des Array-Objekts bestimmt mit einem großen Anfangsbuchstaben schreiben ...

                                    Sorry dass ich aus dem Thread rausgegangen bin, aber ich hatte auf zusätzliche Hilfestellung gehofft.
                                    Es lag tatsächlich nur an diesem blöden fehlenden großen Anfangsbuchstaben des Array-Konstruktors. Jetzt klappt auch die ganze Funktion.
                                    Und deswegen habe ich einen halben Tag rumprobiert! GRRRRRR!
                                    Danke an alle!
                                    Mac

                    2. echo $begrüßung;

                      echo "<script language='JavaScript' type='text/JavaScript'>
                      var Wunsch1='".$row_Recordset1['Wunsch1']."';
                      var Wunsch2='".$row_Recordset1['Wunsch2']."';

                      Du hast an dieser Stelle einen Kontextwechsel. Was passiert beispielsweise  mit deinem erzeugten Javascript-Code, wenn aus der Datenbank ein Wert kommt, der ein ' enthält?

                      echo "$verabschiedung $name";

              2. Hallo,

                Da finde ich eindeutig deine Aussage verwirrdender, den Sourcecode hat er uns bereits gezeigt.

                Rechtsklick -> Seitenquelltext anzeigen.
                Den Quelltext hat er uns leider noch nicht gezeigt, denn genau da sollte das Problem zu finden sein ;).

                1. Da finde ich eindeutig deine Aussage verwirrdender, den Sourcecode hat er uns bereits gezeigt.

                  Rechtsklick -> Seitenquelltext anzeigen.
                  Den Quelltext hat er uns leider noch nicht gezeigt, denn genau da sollte das Problem zu finden sein ;).

                  Den PHP Quelltext, den ich persönlich eher als Sourcecode bezeichnen würde, schon. JS Code kann da eindeutiger sein, wenn man weiß wie man an den HTML Quelltext kommt ;-)

                  Struppi.

                  --
                  Javascript ist toll (Perl auch!)
      2. Hi,

        Was ist da falsch?
        Die Vermutung, man könne JavaScript und PHP in irgend einer Form vermischen.
        Es muss also doch irgendwie gehen!

        die _Vermischung_ von PHP und JavaScript geht _nicht_, weil die beiden Techniken in vollkommen unterschiedlichen Universen agieren. Was immer Du vorhaben magst kann möglicherweise gehen. Dazu ist es zwingend erforderlich, dass Du Dir klarmachst, dass Du nur

        *** ENTWEDER ***

        PHP

        *** ODER ***

        JavaScript vorliegen hast. Niemals (in Worten: *NIEMALS*) beides. Daher ist es auch nicht nur völliger Unfug, bei einem JavaScript-Problem PHP-Code zu posten, sondern es macht i.d.R. eine Hilfe schwer bis unmöglich.

        Trenne die beiden Techniken strikt. Sie haben nichts miteinander zu tun, sie kommen sich nicht in die Quere, sie helfen sich nicht gegenseitig. Sie sind unvermischbar. Betrachte *immer* *nur* eine der beiden Techniken.

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes