Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Wert zurückgeben an PHP-Script

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Wert zurückgeben an PHP-Script

    Hallo zusammen,

    ich habe auf einem Webserver ein PHP-Script, in welchem ich auf einem anderen Server ein weiteres PHP-Script aufrufe (mittels file_get_contents("http://xxx:81/script2.php")).
    Dieses Script2 erzeugt einen Wert in Variable $rewert. Diesen möchte ich in Script1 verwenden. Ich beiße mir aber seit Stunden die Zähne daran aus, wie ich diese Variable aus Script2 nach Script1 bekomme.

    Auch ein include('http://xxx:81/script2.php') funktioniert nicht. (allow_url_fopen + allow_url_include sind auf On)

    Hat da irgendjemand n heißen Tipp für mich?

    verrac

    Hintergrund: Auf Server2 läuft eine DB die per ODBC abgefragt wird. Script2 macht quasi die SQL-Abfrage und den Rückgabewert muss ich in Script1 weiterverarbeiten.

  • #2
    Benutze Webservices
    http://php.net/manual/de/book.soap.php
    [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
    [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

    Kommentar


    • #3
      Also das ist wirklich extrem einfach zu lösen:

      In skript2.php schreibst du am Ende:

      PHP-Code:
      <?php

      // ganz viel Code

      echo $variable;
      Wenn du die Seite jetzt händisch aufrufst, müsstest du auf jedenfall schonmal die Ausgabe sehen. Und die bekommt man auch recht eifnach in das neue Skript (skript1.php):
      PHP-Code:
      <?php

      $variable 
      file_get_contents("http://xxx:81/script2.php");
      // $variable enthält nun den Content von $variable aus Skript 1

      Kommentar


      • #4
        Zitat von alxy Beitrag anzeigen
        Also das ist wirklich extrem einfach zu lösen:

        In skript2.php schreibst du am Ende:

        PHP-Code:
        <?php

        // ganz viel Code

        echo $variable;
        Wenn du die Seite jetzt händisch aufrufst, müsstest du auf jedenfall schonmal die Ausgabe sehen.
        Joa, soweit war ich schon. Da kommt ein knackiges

        Code:
        Resource id #3
        und Ende.
        Lässt sich so leider nicht weiterverarbeiten.

        verrac

        Kommentar


        • #5
          Ich rate mal: Du versuchst etwas in der Art wie echo mysql_query("..."); ?

          Das kann nicht funktionieren. Schau bitte für Beispiele ins manual.

          Falls ich falsch geraten habe, wäre es evt. gut mal etwas Code zu sehen

          Kommentar


          • #6
            Gut geraten.

            PHP-Code:
            <?php
            /* DB Verbindungdaten */
            $odbcdsn '***';
            $odbcuser '***';
            $odbcpw '***';

            /* Zur DB verbinden */
            $odbcconnect odbc_connect ($odbcdsn,$odbcuser,$odbcpw)  or die ('ERROR: connecting to ODBC-DB.');

            /* Übergebene Variablen definieren und auslesen */
            $query NULL;
            foreach (
            $_GET as $key => $value) { $$key=$value; }

            /* ODBC Query ausführen */
            if ($query)
            {
                
            $odbcresult odbc_exec($odbcconnect$query) or die;
                
                echo 
            $odbcresult;
            }
            else
            {
                
            $odbcresult "ERROR: Keine Abfrage vorhanden!";
                echo 
            $odbcresult;
            }


            /* Verbindungen zur Datenbank beenden */
            odbc_close ($odbcconnect);
            ?>
            Und den Wert $odbcresult brauche ich im aufrufenden Script.

            verrac

            P.S.: Wo genau in der Doku könnte ich denn fündig werden?

            Kommentar


            • #7
              Zitat von verrac Beitrag anzeigen
              Da kommt ein knackiges

              Code:
              Resource id #3
              und Ende.
              Und genau das ist, was odbc_exec bei Erfolg liefert
              Die Deutsche Rechtschreibung ist Freeware! Du darfst sie kostenlos nutzen, allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

              Kommentar


              • #8
                Noch eleganter wäre es natürlich, wenn ich den odbc_connect direkt vom Webserver aus machen könnte. Aber so wie ich das verstanden habe, geht das nicht so ohne weiteres (Nur mit ODBC-ODBC-Bridge).

                verrac

                Kommentar


                • #9
                  Zitat von uha Beitrag anzeigen
                  Und genau das ist, was odbc_exec bei Erfolg liefert
                  Und auf Server2 könnte ich nun mit Inhalt von $odbcresult (welches ja die Antwort aus osbc_exec enthält) weiterarbeiten. (Funktioniert auch!)
                  Ich möchte jedoch den Inhalt auf Server1 verarbeiten.

                  verrac

                  Kommentar


                  • #10
                    Die Antwort von odbc_exec() sind allerdings keinesfalls daten aus der Datenbank! Das ist das was du hier vergisst. Du bekommst eine Rückgabe vom Typ resource.

                    Um an die Daten drann zu kommen, musst du noch etwas weiter machen: http://www.w3schools.com/php/php_db_odbc.asp

                    PS: Ich weiß, w3schools - Steinigt mich.

                    Kommentar


                    • #11
                      PHP-Code:

                      /* ODBC Query ausführen */
                      if ($query)
                      {
                      $data = array();
                          
                      $odbcresult odbc_exec($odbcconnect$query) or die;
                          while (
                      odbc_fetch_row($odbcresult)) {
                         
                      $row = array(
                             
                      "spalte1"=>odbc_result($odbcresult,"spalte1"),
                           
                      "spalte2"=>odbc_result($odbcresult,"spalte2"),
                          );
                      $data[]=$row;
                      }
                          echo 
                      json_encode($data);
                      }
                      else
                      {
                          
                      $odbcresult "ERROR: Keine Abfrage vorhanden!";
                          echo 
                      $odbcresult;

                      auf dem anderen server dann

                      PHP-Code:
                      $variable json_decode(file_get_contents("http://xxx:81/script2.php"));
                      var_dump($variable); //hier solltest du ein array haben mit spalte1 spalte2 usw 
                      apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

                      Kommentar


                      • #12
                        So in der Art hab ich jetzt auch gelöst.
                        Nur nicht mit JSON sondern per CSV.

                        PHP-Code:
                        /* Funktionen */
                        function ODBCResourceToCSV($res$del$enc)
                        {
                        $cFields odbc_num_fields($res);
                        $strTable $enc
                        for (
                        $n=1$n<=$cFields$n++) {$strTable .=  odbc_field_name($res$n) . $del ;}
                           
                        $strTable .=  $enc."\n";
                           while(
                        odbc_fetch_row($res))
                           { 
                        $strTable .= $enc;
                               for (
                        $n=1$n<=$cFields$n++)
                                     {
                        $cell odbc_result($res$n);
                            if (
                        $cell=='') {$strTable .= "NULL".$del;}
                                     else {
                        $strTable .= $cell $del;}}
                            
                        $strTable .= $enc."\n";}
                        Return 
                        $strTable;} 

                        ...

                        /* ODBC Query ausführen */
                        if ($query)
                        {
                            
                        $odbcresult odbc_exec($odbcconnect$query) or die;
                            
                        $csvresult ODBCResourceToCSV($odbcresult,";","");
                            
                        /*$csvresult = ODBCResourceToHTML($odbcresult,"","");*/
                            
                        echo $csvresult;
                        }
                        else
                        {
                            
                        $csvresult "ERROR: Keine Abfrage vorhanden!";
                            echo 
                        $csvresult;
                        }


                        /* Verbindungen zur Datenbank beenden */
                        odbc_close ($odbcconnect);
                        ?> 
                        Ich generiere jetzt aus der Tabellenabfrage eine CSV-Ausgabe und lese diese dann mit file_get_contents wieder ein und verarbeite die mit str_getcsv weiter in Arrays.

                        Danke für die Denkanstöße.

                        verrac

                        Kommentar

                        Lädt...
                        X