Jsgrid zeigt nicht alle Spalten an

basti1012

Erfahrenes Mitglied
Ich wollte ess mal hiermit versuchen.
https://github.com/tabalinas/jsgrid-php
Soweit funktioniert es.
Nur bei zwei Spalten ist ende.
Wenn ich ( code, beschreibung (Hier Zeile 16 und 21 )) wieder ein kommentiere geht nix mehr.
Bekomme dann auch keine Fehlermeldungen und auch keine Consolen Fehler.

Leider ist das in PDO geschrieben wo mit ich noch nie klar kam.
Hoffe das es soweit richtig ist.
Zumindest wird alles angezeigt bis auf die beiden Spalten.

Ich denke mal das der Fehler in diesen Code sein könnte.
In den anderen Datein ist ( code und beschreibung ) überall ein gebunden und nicht auskommentiert, da kommen keine Fehler.

Hat einer nee Idee?
Code und beschreibung sind ja auch keine Php Variabeln oder SQL Wörter.
/* ClientRepository.php */
PHP:
<?php

include "Client.php";
class ClientRepository {
    protected $db;
    public function __construct(PDO $db) {
        $this->db = $db;
    }

    private function read($row) {
        $result = new Client();
        $result->id = $row["id"];
        $result->name = $row["name"];
        $result->datum = $row["datum"];
        $result->ordner = $row["ordner"];
        //$result->code = $row["code"];
        $result->css = $row["css"];
        $result->js = $row["js"];
        $result->einbindungen = $row["einbindungen"];
        $result->view = $row["view"];
        //$result->beschreibung = $row["beschreibung"];
        $result->php = $row["php"];
        $result->include = $row["include"];
     
        return $result;
    }
      
    public function getById($id,$tabelle) {
        $sql = "SELECT * FROM $tabelle WHERE id = :id";
        $q = $this->db->prepare($sql);
        $q->bindParam(":id", $id, PDO::PARAM_INT);
        $q->execute();
        $rows = $q->fetchAll();
        return $this->read($rows[0]);
    }


    public function getAll($filter,$tabelle) {
          $name= "%" . $filter["name"] ."%";
          $datum= "%" . $filter["datum"] ."%";
          $ordner="%" . $filter["ordner"] ."%";
          $code="%" . $filter["code"] ."%";
          $css= "%" . $filter["css"] ."%";
          $js= "%" . $filter["js"] ."%";
          $einbindungen= "%" . $filter["einbindungen"] ."%"; 
          $view= "%" . $filter["view"] ."%";
          $beschreibung= "%" . $filter["beschreibung"] ."%";
          $include= "%" . $filter["include"] ."%";
          $php= "%" . $filter["php"] ."%";

          $sql = "SELECT * FROM $tabelle
                  WHERE name LIKE :name
                  AND datum LIKE :datum
                  AND ordner LIKE :ordner
                  AND code LIKE :code
                  AND css LIKE :css
                  AND js LIKE :js
                  AND einbindungen LIKE :einbindungen
                  AND view LIKE :view
                  AND beschreibung LIKE :beschreibung
                  AND include LIKE :include
                  AND php LIKE :php";

        $q = $this->db->prepare($sql);
        $q->bindParam(":name", $name);
        $q->bindParam(":datum", $datum);
        $q->bindParam(":ordner", $ordner);
        $q->bindParam(":code", $code);
        $q->bindParam(":css", $css);
        $q->bindParam(":js", $js);
        $q->bindParam(":einbindungen", $einbindungen);
        $q->bindParam(":view", $view);
        $q->bindParam(":beschreibung", $beschreibung);
        $q->bindParam(":include", $include);
        $q->bindParam(":php", $php);
        $q->execute();
        $rows = $q->fetchAll();
        $result = array();
        //var_dump($result);
        foreach($rows as $row) {
            array_push($result, $this->read($row));
        }
        return $result;
    }



    public function insert($data,$tabelle) {

    $sql = "INSERT INTO $tabelle (name, datum, ordner, code, css, js, einbindungen, view, beschreibung, include, php) VALUES
    (:name, :datum, :ordner, :code, :css, :js, :einbindungen, :view, :beschreibung, :include, :php)";
  
        $q = $this->db->prepare($sql);
        $q->bindParam(":name", $data["name"]);
        $q->bindParam(":datum", $data["datum"]);
        $q->bindParam(":ordner", $data["ordner"]);
        $q->bindParam(":code", $data["code"]);
        $q->bindParam(":css", $data["css"]);
        $q->bindParam(":js", $data["js"]);
        $q->bindParam(":einbindungen", $data["einbindungen"]);
        $q->bindParam(":view", $data["view"], PDO::PARAM_INT);
        $q->bindParam(":beschreibung", $data["beschreibung"]);
        $q->bindParam(":include", $data["include"]);
        $q->bindParam(":php", $data["php"]);
        $q->execute();
        return $this->getById($this->db->lastInsertId());
    }

    public function update($data,$tabelle) {
       $sql = "UPDATE $tabelle SET name = :name,
       datum = :datum,
       ordner = :ordner,
       code = :code,
       css = :css,
       js = :js,
       einbindungen = :einbindungen,
       view = :view,
       beschreibung = :beschreibung,
       include = :include,
       php = :php
       WHERE id = :id";
            
        $q = $this->db->prepare($sql);
        $q->bindParam(":name", $data["name"]);
        $q->bindParam(":datum", $data["datum"]);
        $q->bindParam(":ordner", $data["ordner"]);
        $q->bindParam(":code", $data["code"]);
        $q->bindParam(":css", $data["css"]);
        $q->bindParam(":js", $data["js"]);
        $q->bindParam(":einbindungen", $data["einbindungen"]);
        $q->bindParam(":view", $data["view"], PDO::PARAM_INT);
        $q->bindParam(":beschreibung", $data["beschreibung"]);
        $q->bindParam(":include", $data["include"]);
        $q->bindParam(":php", $data["php"]);
        $q->bindParam(":id", $data["id"]);
        $q->execute();
    }
  
    public function remove($id,$tabelle) {
        $sql = "DELETE FROM $tabelle WHERE id = :id";
        $q = $this->db->prepare($sql);
        $q->bindParam(":id", $id, PDO::PARAM_INT);
        $q->execute();
    }
  
}
?>
 
Ich brauche wohl nicht zu fragen, ob die betr. Spalten auch in der Datenbank existieren?
Für mich hat es sich in solch einem Fall bewährt, das Parsen des JSON auszuschalten und die Ausgaben des PHP in der Console auszugeben oder mit dem Debugger anzuschauen. Dann kannst Du vorgehen wie gewohnt, Fehlerausgaben einschalten, Variablen ausgeben etc.
 
Die Spalten sind in der Db Vorhanden und auch richtig geschrieben.
Habe schon überall var_dump() eingegeben und bekomme bei auskommentierten ( code,beschreibung ) ein Riesen Array , wo code und beschreibung NULL haben.
Ist Ok weil ist ja auskommentiert.
Mache ich es rein und tippe var_dump() ein bleibt die Tabelle leer , der Array auch.

Ich versuche es aber mal ohne den JSON Parser , weil das hatte ich noch nicht versucht.
Vieleicht komme ich dann den Fehler näher.

Hatte am Anfang Angst gehabt das Zeile 23 Probleme macht , weil die Spalte include heißt.
Die macht komischerweise keine probleme.
Melde mich später nochmal ob ich ohne JSON Parsen weiter gekommen bin.
 
Zurück