Ankündigung

Einklappen
Keine Ankündigung bisher.

JSON Tabelle mittels PHP und mySQL füllen

Einklappen

Neue Werbung 2019

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

  • JSON Tabelle mittels PHP und mySQL füllen

    Hallo zusammen,

    ich hoffe ihr könnt mir ein paar Tipps zu meinem Problem geben. Ich arbeite aktuell an einer JSON Tabelle, die ich mittels PHP und einer mySQL Datenbank füllen möchte. Falls es von Bedeutung ist, ich arbeite mit dem Theme "Metronic".

    Als Vorgabe habe ich folgende Datei:

    PHP-Code:
    <?php
    $dbhost 
    'localhost';
    $dbuser 'xxx';
    $dbpass 'xxx';
    $dbname 'xxx';

    $dblink = new mysqli($dbhost$dbuser$dbpass$dbname);

    if (
    $dblink->connect_errno) {
        
    printf("Failed to connect to database");
        exit();
    }

    $result $dblink->query("SELECT * FROM bestellungen_werk LIMIT 3");

    $dbdata = array(
        
    "meta" => array(
            
    "page"    => 1,
            
    "pages"   => 1,
            
    "perpage" => -1,
            
    "total"   => 20,
            
    "sort"    => "asc",
            
    "field"   => "id"
        
    ),
        
    "data" => array(
            array(
                
    'art'    => 'MOSFET 0815',
                
    'artnr' => '123456',
                
    'vpe' => '1',
                
    'menge' => '5',
                
    'besteller' => 'Christian',
                
    'lieferant' => 'RS Online',
                
    'note' => 'Alex Dimmer',
            ),
            array(
                
    'art'    => 'Kondensator 0815',
                
    'artnr' => '567890',
                
    'vpe' => '1',
                
    'menge' => '5',
                
    'besteller' => 'Oliver',
                
    'lieferant' => 'Conrad',
                
    'note' => 'xxx',
            ),
        )
    );
    echo 
    json_encode($dbdata);
    ?>
    Die Tabelle sieht wie folgt aus:

    tabelle.png

    Jetzt möchte ich den data array mit meinen Datenbank-Daten füllen. Habe es so ausprobiert, was leider nicht geklappt hat:

    PHP-Code:
    $dbdata = array(
        
    "meta" => array(
            
    "page"    => 1,
            
    "pages"   => 1,
            
    "perpage" => -1,
            
    "total"   => 20,
            
    "sort"    => "asc",
            
    "field"   => "id"
        
    ),
        
    "data" => array(
            while (
    $row mysqli_fetch_array($result))  {
                array(
                    
    'art'    => $row['art'],
                    
    'artnr' => '123456',
                    
    'vpe' => '1',
                    
    'menge' => '5',
                    
    'besteller' => 'Christian',
                    
    'lieferant' => 'RS Online',
                    
    'note' => 'Alex Dimmer',
                ),
            }
        )
    ); 
    Fehler:

    Code:
    Parse error: syntax error, unexpected 'while' (T_WHILE), expecting ')' in C:\xampp\htdocs\assets\js\pages\crud\metronic-datatable\base\read.php on line 26
    Ich bin aktuell überfragt, wie ich das Problem lösen kann. Vielleicht hat ja einer von euch eine Idee.

    Ich danke euch!

    Beste Grüße,
    crs


  • #2
    Was ist denn eine Json Tabelle?
    Bisher dachte ich immer Json sei ein textuelles Speicherformat zum Austausch für Daten.
    Siehe Handbuch zu json_encode.

    Kommentar


    • #3
      Es gibt da schon gewisse Regeln, welche man einhalten muss. Man kann nicht einfach irgendwo eine while-Schleife reinpacken.

      Wie du etwas an einen Array anhängst findest du z.b. hier => https://www.php.net/manual/de/function.array-push.php
      Der erste Hinweis dort dürfte das sein, was du suchst, du kannst aber natürlich auch die Funktion verwenden.

      Kommentar


      • #4
        Vielen Dank für eure Antworten! Ich habe die while Schleife nun etwas abgeändert und es mit dem array push ausprobiert. Jedoch bekomme ich es immer noch nicht so richtig gebacken...

        So sieht der Code aktuell aus:

        PHP-Code:
        $result $dblink->query("SELECT * FROM bestellungen_werk");

        $dbdata = array();

        $dbdata['meta'] = array(
                
        "page"    => 1,
                
        "pages"   => 1,
                
        "perpage" => -1,
                
        "total"   => 20,
                
        "sort"    => "asc",
                
        "field"   => "id"
        );

        while (
        $row mysqli_fetch_array($result))  {
            
        $artikel = array(
                
        "art" => $row['art'],
                
        "artnr" => $row['artnr'],
                
        "lieferant" => $row['liefer']);
            
        array_push($dbdata['data'], $artikel);
        }

        echo 
        json_encode($dbdata); 
        Code:
        Warning: array_push() expects parameter 1 to be array, null given in C:\xampp\htdocs\assets\js\pages\crud\metronic-datatable\base\read.php on line 33
        Mag vielleicht noch mal eine rüber schauen und mir einen Anstoß geben? Ist wahrscheinlich nur ein Gedankenfehler,.... Danke!

        Kommentar


        • #5
          Zu dem Zeitpunkt bei welchem du auf $dbdata['data'] zugreifen willst exisitert der Array-Index noch nicht, ist also null.
          Du musst den Index $dbdata['data'] zuerst definieren.

          Also vor der Schleife:
          PHP-Code:
          $dbdata['data'] = []; 

          Kommentar


          • #6
            Zitat von jonas3344 Beitrag anzeigen
            Zu dem Zeitpunkt bei welchem du auf $dbdata['data'] zugreifen willst exisitert der Array-Index noch nicht, ist also null.
            Du musst den Index $dbdata['data'] zuerst definieren.

            Also vor der Schleife:
            PHP-Code:
            $dbdata['data'] = []; 
            Super, jetzt funktioniert alles so wie es soll! Danke für die Hilfe, manchmal sitzt der Teufel im Detail...

            Kommentar


            • #7
              Oder im Lesen und Verstehen von Fehlermeldungen.

              Kommentar

              Lädt...
              X