unexpected JSON format

  • Siehst du dort ein Array-Element [response][name]? Ich nicht.


    Testscript:

    Und jetzt sieh' dir das Array mal ganz genau an!

    Ich hätte gedacht name und response weil das im json so aufgebaut ist https://prnt.sc/snkujl

  • weil das im json so aufgebaut ist

    Nein, ist es nicht!! Mach' doch endlich mal die Augen auf! Muss man dir wirklich alles vorkauen? Das mit dem Grundlagen lernen war absolut ernst gemeint!


    PHP
    <?php
      $data = json_decode( file_get_contents('https://api.truckyapp.com/v2/traffic/servers'), true, 5, JSON_BIGINT_AS_STRING ) ;
      
      for ($i = 0; $i < count($data['response']); $i++)
          echo $data['response'][$i]['name'] . "<br>";
      
      echo '<pre>'; var_dump($data); die('/<pre>');
    ?>
  • Nein, ist es nicht!! Mach' doch endlich mal die Augen auf! Muss man dir wirklich alles vorkauen? Das mit dem Grundlagen lernen war absolut ernst gemeint!


    PHP
    <?php
      $data = json_decode( file_get_contents('https://api.truckyapp.com/v2/traffic/servers'), true, 5, JSON_BIGINT_AS_STRING ) ;
      
      for ($i = 0; $i < count($data['response']); $i++)
          echo $data['response'][$i]['name'] . "<br>";
      
      echo '<pre>'; var_dump($data); die('/<pre>');
    ?>

    Es wird dennoch nicht an die Datenbank weitergeleitet

  • Es wird dennoch nicht an die Datenbank weitergeleitet

    Dann machst du was falsch!


    Richtig debuggen

    1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
    2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(-1);
    3. Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
    4. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
    5. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysqli_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
    6. Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
    7. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
    8. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
    9. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.
  • PHP
    <?php
      $data = json_decode( file_get_contents('https://api.truckyapp.com/v2/traffic/servers'), true, 5, JSON_BIGINT_AS_STRING ) ;
      
      for ($i = 0; $i < count($data['response']); $i++)
          echo $data['response'][$i]['name'] . "<br>";
      
      echo '<pre>'; var_dump($data); die('/<pre>');
    ?>

    Oder ich frage so wie also wo setze ich den jetzt richtig ein weil ich habe schon rumprobiert aber es tut sich nichts

  • Muss immer gleich alles selbst sein?

    Nein, aber es ist echt nicht schön, wenn viele Leute fremden Code nehmen, nichts verstehen und dann Fragen stellen!

    Warum die Leute dann überhaupt mit Code rumhantieren ohne selbst Verständnis aufbauen zu wollen...

    da ist es sicherlich verständlich, das es einem dann nervt.

  • Es wird dennoch nicht an die Datenbank weitergeleitet

    Dann poste doch jetzt mal deinen aktuellen Code.

    m.scatello hat dir da schon Code Scnippseö geschrieben die funktionieren.

    Da mußt du jetzt dein Datenbank gedönst mit einbauen.

    Hoffe nicht das du den Code aus #22 genommen hast ohne den anderen Kram da einzubauen und dann sagen es kommt nix in der DB an.


    Wir brauchen jetzt deinen aktuellen Code und wenn Php dir error ausgibt poste die Errors auch hier.

    Du wärst schon längst fertig wenn du das alles sofort gemacht hast.


    Bevor du deinen NICHT funktionierenden Code postest, mach das was in post #24 steht.

    Danach kann man dir besser helfen und die Helfer haben dann auch mehr spaß beim helfen

  • Dann kannst du auch gleich den richtigen Code schreiben oder was halt falsch ist und nicht die ganze Zeit das nervt .

    Fertige Lösungen gibt es eigentlich nicht.

    Du hättest bestimmt noch eine bekommen von den besten Php Mann hier aber der ist jetzt wohl raus.

    Ehrlich gesagt bezweifel ich es das du mit einer fertigen Lösungen weiter kommst.


    Da ich es auch nicht so gut kann kriege ich bestimmt auch mecker was ich da fürn ... poste.

    Ich würde es so machen

    Aber jetzt bedenke...

    1. Ich bin auch noch kein Profi ,und irgendwer wird noch Fehler im Code finden.

    2. Es ist kein PDO und passt mit deinen Datenbank Code was du da bis jetzt gemacht hast nicht zusammen.

    Das darfst du dir dann in der Manual raussuchen wie man das macht( ich hasse PDO deswegen nutze ioch es nicht ).

    3. Er speichert in der Datenbank nicht nur den Namen sondern alles ( name,url,short ,game) egal ob 1 Datensatz oder 1000

    4. und er speichert alles doppelt und dreifach wenn du den Code öffters ausführst.

    5 Wie man das verhindert solltest du selber versuchen.


    Und noch was..

    Halte dich an das was da steht ( Kommentare und ausgaben )

    und bei problemen denke an das debugging aus #24

  • wo setze ich den jetzt richtig ein

    Sorry, aber wieso denkst du nicht mal über das nach, was m.scatello dir in den letzten 2 Codeschnipseln sagen wollte?

    Er schreibt extra noch hin "Testscript", welches dir mit der Ausgabe "$data[response][name] nicht vorhanden" klar machen sollte, das es KEIN Array-Element [response][name] gibt!!!


    Ich hätte gedacht name und response weil das im json so aufgebaut ist

    Selbst in deinem Screenshot!!! Siehst du da ein DIREKTES "response->name"???


    Im 2 Code legt er dir sogar schon zu Füßen, das du "response->NUMMER->name" verwenden musst!

    Und anstatt das zu realisieren, und zu realisieren, das dass ein Testscript war, repostest du diesen Code und sagst

    Es wird dennoch nicht an die Datenbank weitergeleitet


    Hasst du überhaupt den zweiten Teil deines Codes angepasst? Oder sieht der immer noch so aus:

    Code
    $date = $data['response']['name']; // won't be using this ....
        foreach( $data['response']['name'] as $mp ) {
            // ? mp[1] <-> measurement reading failed?


    Wenn du deinen Code dann auch wirklich angepasst hast und es dann nicht geht, poste Ihn bitte nochmal.

  • Du bist doch derjenige, der immer wieder fertige Lösungen liefert

    Deswegen das "eigentlich" :D


    Und somit hat Elton ohne was zu Lernen und ohne Eigeninitiative gewonnen.

    Naja, wenn er in seinem Code überall pdo verwendet, wird er es sicher anpassen müssen. Auch denke ich wird er Probleme mit den Kommentaren/Anweisungen bekommen und wieder nicht weiter wissen, weil er den Code nicht wirklich versteht.

  • Als Anfänger versteht man seinen Code eigentlich nie. Man will einfach etwas machen und kopiert dann sehr viel.


    Man kann als blutiger Anfänger auch kaum Code verstehen, selbst wenn es einem Schritt für Schritt erklärt. Wenn sie dann am Code ein wenig ändert, versteht man wieder nichts. Find das daher nicht so schlimm, Anfängern zu zeigen wie der fertige Code aussehen muss.

  • Es gibt einen Unterschied zwischen Anfänger (der es lernen will) und jemanden, der einfach nur etwas vorhat und bittet, ihm den zusammenkopierten Code zu reparieren und lauffähig zu machen.

    Wenn du schon etwas selbst auf deiner Seite "programmieren/implementieren" willst, so ist den Code einigermaßen zu verstehen PFLICHT!!!

    Für das andere gibt es Entwickler, die man bezahlt.


    Aber sich nicht mal bischen Gedanken zu machen und einfach eine fertige Lösung einfragen ist nicht gut!

    Und leider zeigen deine bisherigen Antworten, das dass ebend auf dich zutrifft!


    • Du hast dich gesträubt, var_dump zu nutzen bzw. dich bei Google zu darüber zu informieren.
    • Du hast den Testcode nicht richtig angenommen und fragst sogar, wo du den Codeschnipsel einsetzen musst.
    • Du hast Post 24 überflogen.
    • Dein JSON zeigt dir KEINE direkte Verbindung response->name, aber du "siehst" es nicht.


    Und trotzdem ist es für dich aber "berechtigt", fertigen Code zu erfragen?


    Mit dem obigen will ich dir übrigens nicht zu nahe treten, aber dein Verhalten lässt (im obigen, ersten Satz) auf letzteren schließen.

  • Find das daher nicht so schlimm, Anfängern zu zeigen wie der fertige Code aussehen muss.

    Dann wird zu 90% einfach nur Copy/Paste gemacht und fertig. Das bringt niemandem etwas! Bei der nächsten Kleinigkeit schlagen dann diese Leute wieder im Forum auf, man weiß ja jetzt, dass man dort ohne Eigeninitiative weiter kommt. Das ist aber nicht Sinn der Sache. In einem Forum bekommt man Hilfe zur Selbsthilfe, nicht mehr und nicht weniger. Wenn man fertigen Quellcode erwartet, dann bitte in der Jobbörse posten und für die erbrachte Leistung auch zahlen.

  • Als Anfänger versteht man seinen Code eigentlich nie. Man will einfach etwas machen und kopiert dann sehr viel.


    Man kann als blutiger Anfänger auch kaum Code verstehen, selbst wenn es einem Schritt für Schritt erklärt. Wenn sie dann am Code ein wenig ändert, versteht man wieder nichts. Find das daher nicht so schlimm, Anfängern zu zeigen wie der fertige Code aussehen muss.

    Deshalb gibt es die neumodische Vorgehensweise mit Namen: "Lernen"!

    Natürlich ist der Anfang schwer, aber egal, ob Anfänger, Fortgeschritten oder Vollprofi, man sollte nie Code verwenden, den man nicht versteht!

    Wenn man ihn nicht versteht, befasst man sich mit der Materie, bis man ihn verstanden hat.

    Und dabei hilft es weniger komplette Codes zur Verfügung zu stellen, als darauf hinzuweisen, was man nachlesen sollte.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!