Ankündigung

Einklappen
Keine Ankündigung bisher.

Mysql abfrage in neuem Fenster durchführen und Ergebnisstring wieder zurückgeben an ö

Einklappen

Neue Werbung 2019

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

  • Mysql abfrage in neuem Fenster durchführen und Ergebnisstring wieder zurückgeben an ö

    Hallo, wie kann ich eine Datei öffnen, in der eine Datenbankabfrage habe und das Ergebnis wieder an die Hauptseite zurückgegeben wird, eventuell soll auf der Hauptseite eine function Befehl durchgeführt werden.


    Danke


  • #2
    Neues Fenster: JavaScript
    Datei: include();

    Ernst: Kannst bisschen genauer beschreiben was du machen möchtest? Deine Angaben sind, für mich, zu vage um wirklich Hilfestellung geben zu können.
    Relax, you're doing fine.
    RTFM | php.de Wissenssammlung | Datenbankindizes | Dateien in der DB?

    Kommentar


    • #3
      Hallo,

      ich will von der Hauptseite ein Fenster aufrufen, welches eine Datenbankabfrage macht und einen String generiert ($Daten), diesen String, welcher groß werden kann (ca. 3000 Zeichen) soll auf der Hauptseite wieder verwendet werden können um ihn in einer Funktion, die gestartet wird, wenn das zweite Fenster geschlossen wird.

      Man kann ja leider den Datenbankinhalt nicht neu laden ohne einen Restart durchzuführen.

      Gruß

      Kommentar


      • #4
        Zitat von trottel100 Beitrag anzeigen
        Hallo,

        ich will von der Hauptseite ein Fenster aufrufen, welches eine Datenbankabfrage macht und einen String generiert ($Daten)
        Kurz gesagt. Dein PHP code macht eine Datenbankabfrage und setzt daraus eine Zeichenkette zusammen die Du in der Variable $Daten ablegst.

        Zitat von trottel100 Beitrag anzeigen
        diesen String, welcher groß werden kann (ca. 3000 Zeichen)
        3000 Zeichen ist doch nix.

        Zitat von trottel100 Beitrag anzeigen
        soll auf der Hauptseite wieder verwendet werden können
        Das must Du die Zeichenkette zur "Hauptseite" hin übergeben.

        Daten zwischen mehreren Fenstern tauscht man meist mittels Javascript aus. Mann kann sich allerdings auch die Daten in der Session ($_SESSION) merken, dann stehen die benötigten Daten allerdings erst nach einem Reload der Resource zur Verfügung die Du "Hauptseite" nennst.

        Zitat von trottel100 Beitrag anzeigen
        um ihn in einer Funktion, die gestartet wird, wenn das zweite Fenster geschlossen wird.
        Der Satz ist unvollständig.

        Gruß, Ulf
        PHP-Manual ¡ mysql_* ist veraltet ¡ Debugging: Finde DEINE Fehler selbst ¡ Passwort-Hashing ¡ Prepared Statements

        Kommentar


        • #5
          Zitat von Ulfikado Beitrag anzeigen
          Kurz gesagt. Dein PHP code macht eine Datenbankabfrage und setzt daraus eine Zeichenkette zusammen die Du in der Variable $Daten ablegst.
          =>Das ist kein Problem


          Zitat von Ulfikado Beitrag anzeigen
          3000 Zeichen ist doch nix.
          => Es würde halt nicht über einen Aufruf mittels Seitennamen gehen.

          Zitat von Ulfikado Beitrag anzeigen
          Das must Du die Zeichenkette zur "Hauptseite" hin übergeben.
          =>Wie geht das? Welchen Befehl nutze ich da am besten?

          Zitat von Ulfikado Beitrag anzeigen
          Daten zwischen mehreren Fenstern tauscht man meist mittels Javascript aus. Mann kann sich allerdings auch die Daten in der Session ($_SESSION) merken, dann stehen die benötigten Daten allerdings erst nach einem Reload der Resource zur Verfügung die Du "Hauptseite" nennst.
          => ein Reload soll nicht sein, ansonsten hätte ich das Problem schon gelöst.

          Zitat von Ulfikado Beitrag anzeigen
          Der Satz ist unvollständig.
          => Ich würde mittels function auf der HauptseiDaten aktualisieren (Dygraph Annotations, die ich aus einer Datenbank auslese) , bisher fand ich nur dinge, mit denen ich Daten ins andere Fenster Senden kann.

          Gruß, Achim

          Kommentar


          • #6
            Zitat von trottel100 Beitrag anzeigen
            =>Wie geht das? Welchen Befehl nutze ich da am besten?
            Hi Achim,

            http://www.codeproject.com/Articles/...tion-of-parent

            also letzlich im zusätzlichen Fenster die von Dir zu erstellende Funktion im Hauptfenster aufrufen und dieser die Zeichenkette als Parameter übergeben.

            Code:
            /**
             * Diese JS Funktion wird im Hauptfenster defiiert.
             */
            function hauptfenster_empfangeDaten( daten )
            {
                // Hier die Daten weiter verwursten
            }
            
            /**
             * Diese JS Funktion wird im Unterfenster defiiert.
             */
            function unterfenster_sendeDatenAnHauptfenster()
            {
            
               // Dynamisch den Wert aus PHP setzen (Beispiel mit Smarty)
               var daten = '{$daten|escape:'quotes'}';
            
               // An Hauptfensterfunktion senden
               window.opener.hauptfenster_empfangeDaten( daten );
            
            }
            Das Unterfenster muss dazu per Javascript geöffnet werden.

            Gruß, Ulf
            PHP-Manual ¡ mysql_* ist veraltet ¡ Debugging: Finde DEINE Fehler selbst ¡ Passwort-Hashing ¡ Prepared Statements

            Kommentar


            • #7
              Hallo,

              genau das war das richtige,
              ich habe jetzt nur ein Problem.
              Die Daten wo zurückkommen sind richtig, nur es ist kein php String. Auf der Childseite bekomme ich einen php String , diesen wandle ich in einen JAvascript Variable um, die ich dann weitergeben kann.
              unter dem Parent Fenster muss ich wieder auf einen PHP String kommen, das funktioniert leider nicht. es kommt ein leerer String heraus.


              Child code.

              PHP-Code:
               


               <!DOCTYPE html>
              <html lang="de">
               <head>
                <meta http-equiv="content-type" content="text/html; charset=utf-8">
                <!-- HTML 4.x -->
              <meta charset="utf-8">
                 <!-- HTML5 -->
                 <?php
               header
              ("Content-Type: text/html; charset=utf-8");
               
              ?>
                <title>Nachrichten</title>

                <style>
                body {
                 font-family: Verdana, Arial, Sans-Serif;
                }

                a:link, a:visited {
                 color: Royalblue;
                 text-decoration: None;
                }
                </style>

               </head>
               
               <script language="javascript" type="text/javascript">

                  function CallParentWindowFunction()

                  {

                      window.opener.ParentWindowFunction( a );

                      return false;

                  }

                  </script>
                  
              <body>

              <h1> klappt? </h1>
               <?php
              include("db.log.php");
              $aa "";

                
              $annotation_data  mysql_query("SELECT DATE_FORMAT(xval,'%Y/%m/%d %H:%i:%s') AS xval1, xval, series, shortText, text
                                      FROM "
              .$database_anno." ORDER BY xval  ") or die(mysql_error());
                
                while(
              $row mysql_fetch_array($annotation_data))
                {
                
              $text str_replace("\r\n""<br>"$row['text']);       // eingebaute Umbrüche ausbessern

                
              $aaa " " .$aaa"{series: '".$row[series]."', x: Date.parse('".$row[xval1]."'), shortText: '".$row[shortText]."', text: '" .$text."'}," ;
                
                  }
                
                  
              //echo $aaa; 
                
              ?>

                
                <script language="javascript" type="text/javascript">
               
                var a = "<?php echo $aaa ?>" ;
                //alert (a);
                CallParentWindowFunction();
               //window.close();
               </script>
                  

               

              </body>
              </html>
              im Parent ist der Code der folgende.

              PHP-Code:
               function ParentWindowFunction(a)   {
                  var anns = a;       
                    alert (anns);
                   var a = "abc";
                   
                   <?php $variable $_POST["a"]; ?>
                   //$Inhalt = $_POST["Inhalt"];
                   
                   var ab = "<?php echo $variable ?>" ;
                    alert (ab);

                 graphdiv2.setAnnotations(anns);         // Annotations anzeigen
                 //alert(anno);
              Hier sind noch die Strings durcheinander und ich habe mehrfach getestet, klappt alles nicht, selbst der kurz vorher festgelegte var a geht nicht???

              Kommentar


              • #8
                Zitat von trottel100 Beitrag anzeigen
                Die Daten wo zurückkommen sind richtig, nur es ist kein php String.
                Verstehe ich das richtig das du die, an das "Hauptfenster" zurück geschickte Zeichenkette in PHP brauchst. Das geht nur indem DU die Daten per GET oder POST request an das PHPscript sendest.

                Zitat von trottel100 Beitrag anzeigen
                unter dem Parent Fenster muss ich wieder auf einen PHP String kommen, das funktioniert leider nicht. es kommt ein leerer String heraus.
                Ja das ist klar. PHP ist zu dem Zeitpunkt längst mit seiner Abarbeitung fertig wen JS ins Spiel kommt. Du solltest Dich erst mal dringen belesen wie PHP auf dem Webserver funktioniert und wie die Verarbeitungskette aussieht. Solange Du das nicht verinnerlicht hast bringt es nix für Dich weiter über Dein Problem nachzudenken, da DU so immer mit falschen Erwartungen rangest.


                Zitat von trottel100 Beitrag anzeigen
                PHP-Code:
                <!DOCTYPE html>
                <html lang="de">
                 <head>
                  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                  <!-- HTML 4.x -->
                <meta charset="utf-8">
                   <!-- HTML5 -->
                   <?php
                 header
                ("Content-Type: text/html; charset=utf-8");
                 
                ?>
                Du kannst keinen HTTP-Header senden wenn davor bereits etwas anderes zum Client geschickt wurde.

                Da alles vor dem öffnenden PHP-Tag bereits zum Client geschickt wurde geht das so nicht.

                Verfrachte das an den Anfang des Scripts. Wenn DU error_reporting und display_errors korrekt in Deiner Entwicklungsumgebung eingestellt hättest wär Dir der Fehler auch dank der dadurch entstandenen Fehlermeldung aufgefallen.

                Zitat von trottel100 Beitrag anzeigen
                PHP-Code:
                    function CallParentWindowFunction()
                    {
                        
                window.opener.ParentWindowFunction);
                        return 
                false;
                    } 
                Warum um Himmels willen mit einer Globalen Variable a, die Du noch zusätzlich, erst weiter hinden im Code definierst? Genau dazu bieten sich in Deinem Fall doch Funktionsparameter an! Dann kannst Du auch später mal noch leichter nachvollziehen was Dein Code da macht ohne erst zu suchen wo 'a' herkommt.

                Code:
                    function callParentWindowFunction( data )
                    {
                        window.opener.ParentWindowFunction( data );
                        return false;
                    }
                Zitat von trottel100 Beitrag anzeigen
                Code:
                  <script language="javascript" type="text/javascript">
                Das language Attribut ist überflüssing! Weg damit…

                Zitat von trottel100 Beitrag anzeigen
                [PHP]
                var a = "<?php echo $aaa ?>" ;
                //alert (a);
                CallParentWindowFunction();[/CODE]
                Zuerst mal must Du sicherstellen das Zeichen, die in Javascript eine besondere Bedeutung haben, auch entsprechend maskiert im Javascriptcode eingesetzt werden. Der sicherste Weg führt dabei z.B. über json_encode

                PHP-Code:
                callParentWindowFunction( <?php echo json_encode$aaa ); ?> );
                Kleine Anmerkung zur Namensbegung. In JavaScript werden nur Klassennamen mit einem großen Buchstaben begonnen. Alles andere beginnt mit einem klein geschriebene Buchstaben. Das ist keine Pflichtsache, aber guter Stil.

                Zitat von trottel100 Beitrag anzeigen
                im Parent ist der Code der folgende.

                PHP-Code:
                 function ParentWindowFunction(a)   {
                    var 
                anns a;       
                      
                alert (anns);
                     var 
                "abc"
                Du kannst hier nicht var a definieren. Die Variable a gibt es bereits als Funktionsparameter!

                und gleich noch was:
                Bitte gib allen Bezeichnern die Du benutzt sebstsprechende Namen. ('a' und andere von Dir verwendete Bezeichner sagen rein garnix aus)

                und last but not least:
                Die paar Daten die Du zu einer Zeichenkette zusammenbaust kannste auch getrost 2mal an den benötigten Stellen zusammenbauen. Der dadurch entstehende Overhaed ist keiner Bemerkung wert. Das ist Spielkram im Bezug auf Resourcenschonung. Lage allen Code dazu ein ein Include (und darin in eine Funktion) aus und binde diesen Code ein wo er gebraucht wird.

                Ansonsten müstets Du die Javascript function im Hauptdokument so umbauen das diese die entgegen genommene Zeichenkette in einem neuen Request per GET oder POST an das verarbeitende Script sendet. Das bedeutet aber das dafür ein neuer Request nötig wird. Und neue HTTP-Requests sind dann doch wesentlich teurer als die paar Millisekunden zum zusammenbauen der Zeichenkette in PHP.

                Konsens, Du versuchst Deine Idee auf dem falschen Weg umzusetzen.

                Gruß, Ulf
                PHP-Manual ¡ mysql_* ist veraltet ¡ Debugging: Finde DEINE Fehler selbst ¡ Passwort-Hashing ¡ Prepared Statements

                Kommentar


                • #9
                  Hallo,

                  danke noch einmal für die Infos,
                  ich bin zur Zeit daran eine elektronische Waage zu bauen, nach der Hardwarebauerei kam C++ und jetzt HTML, PHP und Javasript dazu, bin jemand der aus Teilen etwas zusammenbauen kann aber nicht die Zeit hat alles genau zu lernen (manchmal würde man damit auch Zeit sparen).

                  Dass ich eine php Variable benötige wusste ich vorher nicht, erst durch Versuche stellte ich heraus, dass die Variable mit dem Text nicht geht.


                  Kann ich die Funktion in der "includ"eten Seite ohne einen Reload mehrfach aufrufen?.

                  Danke für die bisherige Hilfe.

                  Kommentar


                  • #10
                    Für was benötigst du denn überhaupt ein zweites Fenster? Was macht das Fenster denn überhaupt?

                    Was passiert mit der Hauptseite, wenn das zweite Fenster geschlossen wird? Wäre AJAX nicht eine bessere Alternative um Daten zu aktualisieren?

                    Kommentar


                    • #11
                      In dem child wird eine Datenbankabfrage durchgeführt, die Daten für eine Aktualisierung von Annotations von dygraph aus der Datenbank ausliest.
                      Diese Funktion soll nach einer Eingabe eines neuen Datensatzes erfolgen.


                      Ich habe jetzt die Dokumente abgeändert.

                      PHP-Code:
                      body {
                         font-family: Verdana, Arial, Sans-Serif;
                        }

                        a:link, a:visited {
                         color: Royalblue;
                         text-decoration: None;
                        }
                        </style>

                       </head>
                       
                       <script  type="text/javascript">

                          function callParentWindowFunction()

                          {

                              window.opener.parentWindowFunction( dataphp );

                              return false;

                          }

                          </script>
                          
                      <body>

                      <h1> klappt? </h1>
                       <?php
                      include("db.log.php");
                      $aa "";

                        
                      $annotation_data  mysql_query("SELECT DATE_FORMAT(xval,'%Y/%m/%d %H:%i:%s') AS xval1, xval, series, shortText, text
                                              FROM "
                      .$database_anno." ORDER BY xval  ") or die(mysql_error());
                        
                        while(
                      $row mysql_fetch_array($annotation_data))
                        {
                        
                      $text str_replace("\r\n""<br>"$row['text']);       // eingebaute Umbrüche ausbessern

                        
                      $annos " " .$annos"{series: '".$row[series]."', x: Date.parse('".$row[xval1]."'), shortText: '".$row[shortText]."', text: '" .$text."'}," ;
                        
                          }
                        
                         
                      // echo $annos; 
                        
                      ?>

                        
                        <script  type="text/javascript">
                       <?php echo $annos ?>
                        var dataphp = " <?php echo json_encode$annos ); ?>" ;
                       alert (dataphp);
                       callParentWindowFunction( );
                        
                        alert (dataphp);
                       
                       //window.close();
                       </script>
                          

                       

                      </body>
                      </html>

                      Parent
                      PHP-Code:
                       function parentWindowFunction(dataphp)   {
                                
                           var 
                      data2 "["+dataphp+"]";
                           
                           
                      alert (data2);  

                         
                      graphdiv2.setAnnotations(data2);         // Annotations anzeigen
                         //alert(anno);

                       


                      scheinbar bleibt die Seite an folgendem Punkt stehen und führt diesen Befehl nicht aus (deshalb habe ich auch die Funktion wieder geteilt.

                      Was ich mich frage warum meine alte Version nicht geklappt hat, bis auf die Fehler die ich durch Tests eingebaut habe.

                      der Echo vom php String und dieser String in eine Javascript umgewandelte
                      Variable enthält nach Ausgabe am Bildschirm immer dieselben Daten.
                      nur wenn ich die umgewandelte Variable benutze klappt mein Befehl nicht, wenn ich eine Variable mit dem ausgegebenen Text vergebe und diese nutze klappt es. ????

                      Kommentar


                      • #12
                        Wollte auch gerade fragen, was Sinn und Zweck sein soll. Klingt wie bereits erwähnt eher nach einem Ajax-Fall.
                        .

                        Kommentar


                        • #13
                          Ein extra Fenster scheint für mich strukturell keinen Sinn zu machen. Auch für die UX ist das garnix.

                          Verwende stattdessen AJAX:
                          • Erstelle eine PHP-Datei, welche die Daten aus der Datenbank abfragt und als JSON Repräsentation ausgibt.
                          • Baue via JavaScript (jQuery würde sich hier gut einsetzen lassen) einen Request auf, welcher diese JSON Repräsentation zurückgibt.
                          • Aktualisiere dann via JavaScript deinen Graphen or w/e.

                          Kommentar


                          • #14
                            Hallo,

                            bevor ich einen anderen Weg nutze die Frage, warum funktioniert der folgende Befehl nicht?

                            PHP-Code:
                             var dataphp = " <?php echo json_encode$annos ); ?>" ; 
                             alert (dataphp);
                            das erkenne ich daran, das der alert befehl nicht ausgeführt wird.


                            Meine Aufgabe ist.

                            dygraph hat den Befehl

                            PHP-Code:
                            graphdiv2.setAnnotations(anns); 
                            wobei anns die Variable ist, kann aber auch direkt nach einer php abfrage folgenderweise geschrieben werden.

                            PHP-Code:
                            graphdiv2.setAnnotations([<?php echo $aaa ?>]);
                            Zur Info: graphdiv2 ist der Graphname.

                            beides funktioniert.

                            Leider wenn ich den php text in eine Variable umwandele geht es nicht mehr.
                            Was verändert sich dann?

                            Die Aufgabe ist eigentlich eine Datenbankabfrage zu wiederholen.
                            Ich gebe über ein geöffnetes Fenster Änderungen in die Datenbank ein, nach der Änderung sollte auf der Hauptseite der Befehl

                            PHP-Code:
                            graphdiv2.setAnnotations([<?php echo $aaa ?>]);
                            ausgeführt werden, damit die Annotations aktualisiert werden ohne die Seite neu zu laden.

                            Gruß

                            Achim

                            Kommentar


                            • #15
                              bevor ich einen anderen Weg nutze die Frage, warum funktioniert der folgende Befehl nicht?
                              Weil PHP auf dem Server ausgeführt wird. Wenn die Seite einmal da ist, kannst du nicht noch nachträglich Variablen in das Script werfen. Für so etwas brauchst du Client-seitige Sprachen, z.B. JavaScript.

                              Per JavaScript kannst du einen Request an den Server senden ohne die Seite neu laden zu müssen. -> Ajax
                              Der Server kann eine Antwort auf den Request senden, auf diese Antwort kannst du dann weiter mit JavaScript reagieren.

                              Zu deinem Problem: Hab mir den Thread nicht ganz durchgelesen, aber du könntest dir vielleicht das ganze Diagramm per Ajax holen. edit: ist wohl Unsinn, gibts ne Schnittstelle um die Werte per Ajax zu aktualisieren?
                              Relax, you're doing fine.
                              RTFM | php.de Wissenssammlung | Datenbankindizes | Dateien in der DB?

                              Kommentar

                              Lädt...
                              X