Beiträge von m.scatello

    Wie schon geschrieben, ein Gästebuch ist schon mal kein schlechter Anfang.

    Bei mir in der Firma haben wir mal vor Jahren einem Azubi ein FAQ als Aufgabe gegeben. Also eine firmeninterne Wissenssammlung mit Suchfunktion, Benutzerverwaltung, etc. Nach und nach wurde die FAQ um Kategorien erweitert, man konnte dann jedem Eintrag einer oder mehreren Kategorien zuweisen, um die Suchergebnisse zu verfeinern. Das hat sich im Endeffekt als sehr praktikabel erwiesen und wird auch heute noch intensiv genutzt. Sich soetwas für den privaten Bereich zu bauen, kann ja dann nicht verkehrt sein. Und man hat auch wirklich Nutzen davon, wenn man die Daten vernünftig pflegt.

    3. Dann fängt man zb mit den Gästebuch an , wo man Php brauch und mit Javascript ( Ajax ) so langsam an die schwereren sachen ankommt.

    JavaScript bzw. Ajax kann man erst mal komplett weglassen, nicht gleich zuviele Sachen auf einmal

    Irgendwann willst du wissen wer dich so besucht und baust dir einen Counter ( kein 0815 )

    Ein Counter ist sowas von Out, das braucht kein Mensch mehr und großartig zu lernen gibt es dabei auch nicht

    Wenn du Gästebuch erfolgreich erstellt hast und verstanden hast könntest du erstmal einen kleineren Chat bauen.

    Je nachdem, wohin die Interessen gehen, kann man auf einen Chat komplett verzichten. Das ist nichts für Hobby-Programmierer und wenn man es doch macht, dann doch nur, weil man fälschlicherweise glaubt, man bräuchte soetwas.

    Das erste Projekt, dass ich umsetzten möchte ist ein kleines CMS

    Das halte ich, wenn ich ehrlich sein soll, für völlig überzogen. Wenn du Probleme mit den unterschiedlichen Schleifen hast, dann kann man ja davon ausgehen, dass du noch keine Programmiererfahrung hast, mal völlig unabhängig von der Programmiersprache. Und somit wirst du am Anfang auch noch Probleme mit der Logik und dem richtigen Aufbau haben, ganz zu schweigen von objektorientierter Programmierung. Da schießt du mit einem CMS, auch wenn es noch so schmalspurig sein kann, weit über das Ziel hinaus. Du musst erst einmal die Grundlagen lernen und dich dann langsam steigern. Auch wenn man es im Endeffekt nicht wirklich einsetzt, aber ein Gästebuch ist ein deutlich besserer Einstieg. Man lernt dabei mit Formularen umzugehen, das Speichern in eine DB, das Auslesen aus einer DB und die Daten anständig auszugeben. Auch hierbei kann man einen WYSIWYG-Editor einbauen und den Umgang damit lernen.

    Wenn du wirklich gute Scripte schreiben willst, dann wirst du im Laufe der Zeit auch feststellen, dass du dein Gästebuch irgendwann mal komplett wegschmeißt und neu schreiben solltest. Aber dazu wirst du erst kommen, wenn du reichlich Erfahrungen gesammelt hast. Ein CMS ohne diese Erfahrungen wird ein Schuss in den Ofen werden und es ist zu befürchten, dass deine Motivation den Bach runter geht.

    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.

    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.

    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>');
    ?>

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

    Testscript:

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

    Bevor das hier eine "Never ending story" wird:

    Code
    else if ( !isset($data['response'], $data['response']['name']) || !is_array($data['response']['name'])) 
    {
        echo '<pre>'; var_dump($data); die('</pre>');
        die('unexpected JSON format');
    }

    Ich kann mir nicht vorstellen was da falsch sein kann.

    Dann reicht deine Vorstellungskraft nicht aus. Irgendein isset liefert false und somit hast du das Problem. Nicht umsonst habe ich was von var_dump geschrieben.

    Und der Teil ist ja auch Quatsch:

    isset($data['response']['name'], $data['response']['name'])

    2x $data['response']['name'] :rolleyes:

    Was ist hier falsch?

    Falsch ist, dass du nicht selber überprüfst, was da schief läuft. Es kann doch nur an

    Code
    if ( !isset($data['response']) || !isset($data['response']['name'], $data['response']['name']) || !is_array($data['response']['name']) )

    liegen. Da bietet es sich doch einfach mal an, sich $data per var_dump anzeigen zu lassen, oder?