Ankündigung

Einklappen
Keine Ankündigung bisher.

integration/einbetten von JavaScript in PHP macht probleme

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • integration/einbetten von JavaScript in PHP macht probleme

    Hi,

    folgendes Problem:
    --
    Ich habe eine php seite, mit grossem Form.
    Innerhalb dessen kann der USer um ein bestimmtes Feld zu füllen über einen Button ein Window aufrufen, sich dort weiternavigieren um schliessendlich mittels Javascript dne Wert dann in das Textfeld des ausgangsforms zu übertragen.

    der katuelle Code funktioniert auch,
    NUR muss ich jetzt das ganze direkt in PHP einbetten.

    a) der funktionierende Code:
    ---
    PHP-Code:
    <HTML>
    <HEAD>
    <SCRIPT LANGUAGE="JavaScript">
    function updateParent() 
    {
        opener.document.add_art_form.standort.value = document.childForm.cf1.value;
        self.close();
        return false;
    }
    </SCRIPT>
    </HEAD>
    <BODY>
    <FORM NAME="childForm" onSubmit="return updateParent();">

    <INPUT NAME="cf1" TYPE="TEXT" VALUE="">

    <INPUT TYPE="SUBMIT" VALUE="OK">
    </FORM></BODY></HTML>
    </html>

    <?php

    // final.php
    // just show the selected location info
    //
    //
    //
    // Welche Location Daten wurden über den Link uebergeben ?
    $location $_GET['identifier'];
    //echo $location."
    ";
    //coords
    $x1 = $_GET['x1'];
    $y1 = $_GET['y1'];
    $x2 = $_GET['x2'];
    $y2 = $_GET['y2'];
    //
    //
    //
    // DB cfg laden
    include 'inc/config.php';
    // DB Connect
    @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die(mysql_error());
      mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());
    //
    // Alle Daten im Bezug auf die uebergebenene Variablen
    $sql = "    SELECT     standort_idstandort_namestandort_x1standort_y1standort_x2standort_y2
                    FROM        KIS_standort
                    WHERE        standort_x1 
    '$x1'                    AND 
                                
    standort_y1 '$y1'                    AND
                                
    standort_x2 '$x2'                    AND
                                
    standort_y2 '$y2'                    AND
                                
    standort_name LIKE '%$location%'";                
    $result = mysql_query($sql) or die(mysql_error());
    $row = mysql_fetch_assoc($result);
    //echo "
    Standort".$row['standort_name'].".$row['standort_id'].
    ";
    //
    // 
    // [b]Das ist der Wert der eigentlich im HTML TEXTFELD zurückgegeben werden soll[/b]
    echo "
    ID f&uuml;r den Insert".$row['standort_id']."
    ";
    ?>

    soweit so gut.
    nun habe ich das Problem,
    das der wert aus dem php Code eigentlich direkt in dem in HTML angelegten Textfeld erscheinen soll.

    ich habe es so probiert:


    b) nicht funkt. Code
    PHP-Code:
    <?php

        
    // test ob JS direkt in PHP einsetzbar
        
        
    echo "<html>";
        echo 
    "<head>";
        echo 
    "<SCRIPT LANGUAGE='JavaScript'>";
        function 
    updateParent() 
        {
            echo 
    "opener.document.add_art_form.standort.value = document.childForm.cf1.value;";
            echo 
    "self.close();";
            echo 
    "return false;";
        }
        echo 
    "</SCRIPT>";
        echo 
    "</head>";
        
        




        
    // final.php
        // just show the selected location info
        //
        //
        //
        // Welche Location Daten wurden über den Link uebergeben ?
        
    $location $_GET['identifier'];
        
    //echo $location."
    ";
        //coords
        
    $x1 = $_GET['x1'];
        
    $y1 = $_GET['y1'];
        
    $x2 = $_GET['x2'];
        
    $y2 = $_GET['y2'];
        //
        //
        //
        // DB cfg laden
        include 'inc/config.php';
        // DB Connect
        @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die(mysql_error());
       mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());
        //
        // Alle Daten im Bezug auf die uebergebenene Variablen
        
    $sql = "    SELECT     standort_idstandort_namestandort_x1standort_y1standort_x2standort_y2
                    FROM        KIS_standort
                    WHERE        standort_x1 
    '$x1'                    AND 
                                
    standort_y1 '$y1'                    AND
                                
    standort_x2 '$x2'                    AND
                                
    standort_y2 '$y2'                    AND
                                
    standort_name LIKE '%$location%'";                
        
    $result = mysql_query($sql) or die(mysql_error());
        
    $row = mysql_fetch_assoc($result);
        //echo "
    Standort".$row['standort_name'].".$row['standort_id'].
    ";
        echo "
    ID f&uuml;r den Insert".$row['standort_id']."
    ";
        
        
        echo "
    <FORM NAME='childForm' onSubmit='return updateParent();'>";
        echo "
    <INPUT NAME='cf1' TYPE='TEXT' VALUE='".$row['standort_id']."'>";
        echo "
    <INPUT TYPE='SUBMIT' VALUE='TEST'>";
        echo "
    </FORM>";

        
    ?>
    Problem:
    der wert wird nicht zurückgeliefert.
    Was mache ich hier falsch ?


    würde mich freuen wenn mir jmd helfen kann.

    schöne grüsse
    fidel_[/b]


  • #2
    Was mache ich hier falsch ?
    nichts

    /edit: mal vorrausgesetzt dein $row['standort_id'] enthält einen wert

    Kommentar


    • #3
      er enthält einen Wert, wie man alleine an diesem Testouput:

      echo "ID f&uuml;r den Insert: ".$row['standort_id']."
      ";


      sehen sollte

      Naja, die einbettung funktioniert so leider nicht.
      d.h.
      ich erhalte keinen Fehleroutput, o.ä,
      aber in meinem Textfeld erscheint halt auch nicht der Inhalt der Variable


      das merkwürdige dabei:
      --
      - Der Inhalt der Variable steht in dme Textfeld im Window
      -Drücke ich den Button "TEST" passiert folgendes:
      -Der Inhalt des Textfeldes innerhalb des Windows, wird auf 1 gesetzt
      - Im ausgangs-Form kommt nix an

      sonst jmd ?


      gruss
      fidel_

      Kommentar


      • #4
        Wenn du schon das JS mit "echo" generierst, dann doch bitte komplett :

        PHP-Code:
        <?php

         
        echo "<html>";
         echo 
        "<head>";
         echo 
        "<SCRIPT LANGUAGE='JavaScript'>";
         echo 
        "function updateParent() ";
         echo 
        "{";
         echo 
        "opener.document.add_art_form.standort.value = document.childForm.cf1.value;";
               echo 
        "self.close();";
               echo 
        "return false;";
         echo 
        "}";
           echo 
        "</SCRIPT>";
           echo 
        "</head>";
            
        ?>
        Warum eigentlich mit "echo" ? Ging doch simpler ohne ...

        edit: so, wie du's "ganz oben" bereits getan hast ...?
        ToolsTool - Online (SEO-)Tools im Browser gleichzeitig starten ...

        Kommentar


        • #5
          jo, wenn dann komplett war hier auch der Grund.

          danke geht


          warum mit echo ?
          ganz einfach, ich fins den code uebersichtlicher wenn nicht alle 3 min zwischen php/html etc geswitched wird....sprich nur stil sache.

          gruss
          fidel_

          Kommentar


          • #6
            Nur Stil-Sache ?

            Wenn du dem Parser unnötigen Code zum futtern gibst, wird's "irgendwann" eine Performance-Sache.

            Würde dir vorschlagen, die Verwendung von " und ' zu überdenken (und ein paar andere Kleinigkeiten). Ein Beispiel aus deinem Code:

            Code:
            echo "<FORM NAME='childForm' onSubmit='return updateParent();'>";
            Um "validen" Code zu erhalten :

            - bei validem XHTML gibt es für Formulare kein name-Attribut mehr, nur noch eine id
            - HTML-Tags und Attribute sollten "klein" geschrieben werden
            - Attributwerte und JS-Code in Eventhandlern sollten von " umfasst werden, nicht von '
            - Daher sollte man bei einer Ausgabe mit echo ' verwenden, um nicht durcheinander zu kommen (sofern echo halt überhaupt von Nöten ist). Und um den Parser zu veranlassen die Ausgabe eben NICHT zu parsen.

            Code:
              echo '<form id="childForm" onSubmit="return updateParent();">';
            ToolsTool - Online (SEO-)Tools im Browser gleichzeitig starten ...

            Kommentar


            • #7
              ich muss jetzt nochmal nachhaken...

              d.h. wenn ich schon mein HTML in PHP einbette und mit echo ausgeben
              dann bitte so:

              PHP-Code:
              echo "<td></td>"
              anstatt so :

              PHP-Code:
              echo '<td></td>'
              hat jmd bzgl parser ein paar gute links parat ?
              ich hab mir das einfach so angewöhnt und einfach gedacht die notation wäre ok so.


              thx für den hinweis

              Kommentar

              Lädt...
              X