Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Array aus php script holen

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Array aus php script holen

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      sveni_lee last edited by

      Ich bekomme ich Adapter eine Fehlermeldung…

      file Not found: Not exist
      

      Allerdings bei Aufruf über http://192.168.1.142/Server.php

      Bei Aufruf über https://… kommt nur ein Fenster mit Err...

      Mir erschließt sich auch so richtig wie mir der Adapter helfenkann

      Was versuche ich hier... ich möchte gern durch meine Datenbank browsen und die Daten aus dem übergebenen Array jeweils in einem Widget darstellen und wenn man auf das Widget drückt quasi durch Übergabe des neuen Pfades die Unterordner anzeigen...

      Gesendet von iPhone mit Tapatalk Pro

      1 Reply Last reply Reply Quote 0
      • S
        sveni_lee last edited by

        nach dem ich nun ein wenig mehr mit dem Parser Adapter herumgespielt habe bekomme ich nun folgendes:

        ![](</s><URL url=)https://i.imgur.com/PnNTYtF.jpg" />

        1 Reply Last reply Reply Quote 0
        • S
          sveni_lee last edited by

          ich versuche immer noch mein php-script auf meinem Server aufzurufen…

          das php.Script liegt unter /opt/iobroker/server.php

          mein test js script:

          const request = require('request');
          request('http://192.168.1.142:8082/server.php', (err, res, body) => {
            if (err) { return console.log(err); }
            log(body.url);
            log(body.explanation);
          });
          

          wenn ich das js-script ausführe komm t im log:

          javascript.0	2018-05-28 12:09:28.167	info	script.js.common.Test: undefined
          javascript.0	2018-05-28 12:09:28.167	info	script.js.common.Test: undefined
          javascript.0	2018-05-28 12:09:28.159	info	script.js.common.Test: registered 0 subscriptions and 0 schedules
          javascript.0	2018-05-28 12:09:28.156	info	Start javascript script.js.common.Test
          javascript.0	2018-05-28 12:09:28.152	info	Stop script script.js.common.Tes
          

          versuche ich es mit https://192.168.1.142:8082/server.php kommt im log:

          javascript.0	2018-05-28 12:16:09.822	info	script.js.common.Test: Error: socket hang up
          javascript.0	2018-05-28 12:16:09.815	info	script.js.common.Test: registered 0 subscriptions and 0 schedules
          javascript.0	2018-05-28 12:16:09.812	info	Start javascript script.js.common.Test
          javascript.0	2018-05-28 12:16:09.807	info	Stop script script.js.common.Test
          

          kann mir mal jemand auf die Sprünge helfen?

          1 Reply Last reply Reply Quote 0
          • AlCalzone
            AlCalzone Developer last edited by

            Womit führst du das php-Skript denn aus? ioBroker bzw. der Web-Adapter kann das von Hause aus nicht.

            1 Reply Last reply Reply Quote 0
            • S
              sveni_lee last edited by

              ich habe das in ein js script in iobroker gepackt…

              ich dachte das das php-script wie eine locale html behandelt wird...

              1 Reply Last reply Reply Quote 0
              • AlCalzone
                AlCalzone Developer last edited by

                https://de.wikipedia.org/wiki/PHP#Funktionsweise

                1 Reply Last reply Reply Quote 0
                • S
                  sveni_lee last edited by

                  okay, verstehe… also eine directes aufrufen ist nicht möglich...

                  ich habe ganz nebenbei noch einen Apache auf dem Server laufen...

                  aber wie bringe ich mein script dazu den interpreter zu benutzen?

                  1 Reply Last reply Reply Quote 0
                  • AlCalzone
                    AlCalzone Developer last edited by

                    Du musst das irgendwo im Apache-Verzeichnis ablegen. Eine kurze Google-Suche liefert:

                    https://stackoverflow.com/questions/238 … u/38567352

                    1 Reply Last reply Reply Quote 0
                    • D
                      dwm last edited by

                      Hi,

                      warum machst Du im PHP statt einem "print_r" kein

                      print (json_encode($result));
                      

                      Dann würd das script nämlich JSON liefern, und man müsst sich auf der Javascript Seite mit Regex keinen Wolf parsen …

                      1 Reply Last reply Reply Quote 0
                      • S
                        sveni_lee last edited by

                        die Umwandlung in json hatte ich schon eingebaut… danke

                        Aber wenn ich nun die seite im Browser aufrufe wird mir der code angezeigt aber nicht das Ergebenis.

                        ist das so richtig?

                        ![](</s><URL url=)https://i.imgur.com/YCrngon.jpg" />

                        1 Reply Last reply Reply Quote 0
                        • AlCalzone
                          AlCalzone Developer last edited by

                          Dann führt Apache den PHP-Interpreter nicht aus. Wieder eine kurze Google-Suche und ich lande hier:

                          https://www.strassenprogrammierer.de/ph … p_612.html

                          Mal ehrlich, das bekommst du doch auch hin, oder?

                          1 Reply Last reply Reply Quote 0
                          • S
                            sveni_lee last edited by

                            natürlich, Du hast föllig recht!

                            Allerdings quäle ich google permanent zu meinem Vorhaben. Ich habe den code auch nur mit hlfe von google

                            zusammen geschustert.

                            Leider hat sich auch bei ubuntu und Appache2 eine Menge geändert, so dass die Einstellungen nicht mehr

                            so einfach zu verstehen sind… zumindest für mich.

                            Nichz desto trotz habe ich zum mindest hinbekommen das nicht mehr der code angezeigt wird sondern nun

                            erscheint Array() im Browser... das bedeutet für mich ich bin einen Schritt weiter und werde jetzt mal google fragen

                            was ich noch falsch mache...

                            1 Reply Last reply Reply Quote 0
                            • S
                              sveni_lee last edited by

                              es gab einiges was serverseitig noch umgestellt und eingerichtet werden musste. nun klappt es aber schon mal mit dem Array bzw. der json ausgabe im Browser…

                              Das bedeutet ich komme jetzt an den Punkt an dem ich die json von der "webseite" abrufen möchte.

                              Das sollte ja mit dem Request-Modul, welchen ja onboard sein sollte...

                              ich habe jetzt einiges gegoogelt und probiert aber ich bekomme immer eine Info:

                              javascript.0	2018-05-30 12:43:30.563	info	script.js.common.Test: undefined
                              javascript.0	2018-05-30 12:43:30.563	info	script.js.common.Test: undefined
                              javascript.0	2018-05-30 12:43:30.556	info	script.js.common.Test: registered 0 subscriptions and 0 schedules
                              
                              const request = require('request');
                              request('http://192.168.1.142/server.php', (err, res, body) => {
                                if (err) { return log(err); }
                                log(body.url);
                                log(body.explanation);
                              });
                              

                              das beispiel hatte ich aus der verlinkten Seite übernommen…

                              die "Website" gibt jett folgendes aus:

                              {"1973 - Ring Ring":"dir","1974 - Waterloo":"dir","1975 - Abba":"dir","1976 - Arrival":"dir","1977 - Abba The Album":"dir","1979 - Voulez Vous":"dir","1980 - Gracias Por La M\u00fasica":"dir","1980 - Super Trouper":"dir","1981 - The Visitors":"dir","1982 - The Singles - The first 10 Years":"dir","1986 - Abba Live":"dir","1992 - Abba Gold (Greatest Hits)":"dir","1993 - More Abba Gold (More Abba Hits)":"dir","1994 - Thank You For The Music":"dir","1999 - Mamma Mia (The Musical)":"dir","1999 - The Complete Single Collection 1":"dir","1999 - The Complete Singles Collection (CD1)":"dir","2000 - Waterloo Ultimate Collection":"dir","2001 - The Definitive Collection 1":"dir","2006 - Number Ones":"dir","2011 - Abba Collected":"dir","extrafanart":"dir","artist.nfo":"\/Datengrab_xbmc\/Musik\/Alben\/ABBA\/\/artist.nfo","banner.jpg":"\/Datengrab_xbmc\/Musik\/Alben\/ABBA\/\/banner.jpg","clearart.png":"\/Datengrab_xbmc\/Musik\/Alben\/ABBA\/\/clearart.png","fanart.jpg":"\/Datengrab_xbmc\/Musik\/Alben\/ABBA\/\/fanart.jpg","folder.jpg":"\/Datengrab_xbmc\/Musik\/Alben\/ABBA\/\/folder.jpg","logo.png":"\/Datengrab_xbmc\/Musik\/Alben\/ABBA\/\/logo.png"}
                              

                              edit… hab jetzt mit viel tryandError hinbekommen...!!!

                              1 Reply Last reply Reply Quote 0
                              • AlCalzone
                                AlCalzone Developer last edited by

                                Super dass es jetzt klappt. Setze bitte ein "[gelöst]" vor den Thementitel.

                                Und für andere, die hier möglicherweise drauf stoßen wäre es gut, wenn du deine Lösung noch posten könntest.

                                1 Reply Last reply Reply Quote 0
                                • S
                                  sveni_lee last edited by

                                  naja gelöst ist das ganze noch nicht… eventuell muß ich die Überschrift ändern.

                                  die Abfrage klappt jetzt so:

                                  const request = require('request');
                                  const idJSON = "javascript.0.DB_Abfrage.DB_json";
                                  
                                  request('http://192.168.1.142/server.php', (err, res, body) => {
                                    if (err) { return log(err); }
                                    log(body);
                                    setState(idJSON, body);
                                    var obj = JSON.parse(body, function (key, value) {
                                      if (value == "dir" && key != "extrafanart") 
                                          log(key);
                                  
                                      });
                                  });
                                  
                                  

                                  allerdings würde ich grn in der json abfrage einen counter mitlaufen lassen so das ich die erhaltenen "key" auch einem state zu ordnen kann.

                                  müsste dann wohl mit einer "for" schleife gemacht oder gibt es einen besseren Weg?

                                  EDIT:

                                  okay, mit counter funtioniert so:

                                  const request = require('request');
                                  const idJSON = "javascript.0.DB_Abfrage.DB_json";
                                  
                                  request('http://192.168.1.142/server.php', (err, res, body) => {
                                    if (err) { return log(err); }
                                    log(body);
                                    setState(idJSON, body);
                                    var i = 1;
                                    var obj = JSON.parse(body, function (key, value) {
                                          if (value == "dir" && key !="extrafanart") {
                                          log(key);
                                          log(i);
                                          i=i+1;
                                  
                                          }
                                      });
                                  });
                                  
                                  1 Reply Last reply Reply Quote 0
                                  • AlCalzone
                                    AlCalzone Developer last edited by

                                    Alternativ kannst du auch sowas machen, ist vermutlich eher das was du willst:

                                    const parsed = JSON.parse(body);
                                    for (const key of Object.keys(parsed)) {
                                        const value = parsed[key];
                                        // was mit den Einträgen machen. In key stehen nacheinander die Schlüssel deines Objekts, in value nacheinander die dazugehörigen Werte, wie "dir", etc...
                                    }
                                    
                                    

                                    Oder wenn du (wie es mir scheint), nur die Verzeichnisse außer "extrafanart" willst:

                                    const parsed = JSON.parse(body);
                                    const files = Object.keys(parsed)
                                        .filter(key => parsed[key] === "dir" && key !== "extrafanart") // Verzeichnisse filtern
                                    ;
                                    // Hier ist files jetzt ein String-Array mit Inhalt ["1973 - Ring Ring", "1974 - Waterloo", ...]
                                    
                                    
                                    1 Reply Last reply Reply Quote 0
                                    • S
                                      sveni_lee last edited by

                                      das schau ich mir auf jedenfall mal an…

                                      habe jetzt mal ein wenig gespielt...

                                      ~~![](</s><URL url=)https://i.imgur.com/nCKLNwz.jpg" />

                                      die states werden durch das script gefüllt… und wenn man auf den Ordner dückt wird der "Name" an einen state übergeben. dieser soll dann über das script an meine serve.php übergeben werden...

                                      Der teil mit der Übergabe fehlt mir allerdings noch...~~

                                      1 Reply Last reply Reply Quote 0
                                      • First post
                                        Last post

                                      Support us

                                      ioBroker
                                      Community Adapters
                                      Donate

                                      780
                                      Online

                                      31.7k
                                      Users

                                      79.9k
                                      Topics

                                      1.3m
                                      Posts

                                      3
                                      24
                                      2235
                                      Loading More Posts
                                      • Oldest to Newest
                                      • Newest to Oldest
                                      • Most Votes
                                      Reply
                                      • Reply as topic
                                      Log in to reply
                                      Community
                                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                      The ioBroker Community 2014-2023
                                      logo