Ankündigung

Einklappen
Keine Ankündigung bisher.

OOP Hauptklasse starten

Einklappen

Neue Werbung 2019

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

  • OOP Hauptklasse starten

    Hallo,

    ich setze mich aktuell mit der OOP auseinander.
    Um das Ganze ein wenig nachvollziehen zu können, folgenden Ansatz um Daten in eine Datenbank zu schreiben:

    Klasse Datenbankverbindung:
    PHP-Code:
    <?php
    class Connect {

        public 
    $db;
        protected 
    $server;
        protected 
    $user;
        protected 
    $password;
        protected 
    $options;

        function 
    __construct() {

            
    $server        'mysql:host=lxxx;dbname=xxx;';
            
    $user        'xxx';
            
    $password    'xxx';
            
    $options  = array (
                
    PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'
            
    );

            try {
                
    $this->db = new PDO($server$user$password$options);
            }

            catch (
    PDOException $e) {
                echo 
    "Datenbankfehler\n\n" $e->getMessage();
            }

        }
    }
    ?>
    Klasse Datenverarbeitung
    PHP-Code:
    <?php
    class Group {

        public 
    $groupId;
        public 
    $groupName;
        public 
    $stmt;

        
    // Gruppen auslesen
        
    function __construct($connect) {

            
    $sGroup "SELECT \n";
            
    $sGroup.= "    * \n\n";

            
    $sGroup.= "FROM \n";
            
    $sGroup.= "    klb_group \n\n\n\n\n";

            
    // echo '<pre>' . str_replace("\n", '<br>', $sGroup) . '</pre>';

            
    return $stmt $connect->db->query($sGroup)->fetchAll(PDO::FETCH_OBJ);

        }

        
    // neue Gruppe anlegen/Gruppe ändern
        
    public function newGroup($groupId$groupName) {

            
    $iGroup "INSERT INTO \n";
            
    $iGroup.= "    klb_group \n\n";

            
    $iGroup.= "( \n";
            
    $iGroup.= "    klb_group_id, \n";
            
    $iGroup.= "    klb_group_name \n";
            
    $iGroup.= ") \n\n";

            
    $iGroup.= "VALUES \n";
            
    $iGroup.= "( \n";
            
    $iGroup.= "    :groupId, \n";
            
    $iGroup.= "    :groupName \n";
            
    $iGroup.= ") \n\n";

            
    $iGroup.= "ON DUPLICATE KEY UPDATE \n";
            
    $iGroup.= "    klb_group_id = VALUES(klb_group_id); \n";
            
    $iGroup.= "    klb_group_name = VALUES(klb_group_name); \n\n\n\n\n";

            
    // echo '<pre>' . str_replace("\n", '<br>', $iGroup) . '</pre>';

            
    $stmt $this->connect->db->prepare($iGroup);
            
    $stmt->execute(
                array (
                    
    ':groupId' => $groupId,
                    
    ':groupName' => $groupName
                
    )
            );

        }
    }
    ?>
    Ich konnte von der Klasse Group die Datenbankverbindung herstellen und eine Gruppe in der Datenbank anlegen. Das hatte schon mal geklappt.
    Jetzt möchte ich das Ganze aber so umbauen, dass ich das von der index.php (Hauptseite) aus steuern kann.
    Und genau da scheiter ich.

    Muss ich dazu eine weitere Klasse in der Hauptseite erstellen?
    PHP-Code:
    <?php
    function autoloader() {
        include 
    'group.inc.php';
        include 
    'connect.inc.php';
    }
    spl_autoload_register('autoloader');

    class 
    Main {

        public 
    $connect;
        public 
    $group;
        public 
    $groupId;
        public 
    $groupName;

        function 
    __construct() {
            
    $this->connect = new Connect();
            
    var_dump($this->connect);
        }

        public function 
    getGroup () {
            
    $group = new Group($this->connect);
            
    var_dump($group);
        }

        public function 
    newGroup ($groupId$groupName) {
            
    $group = new Group($this->connect);
            
    $this->newGroup($group);
            
    var_dump($group);
        }
    }
    $main = new Main();



    // neue Gruppe anlegen
    if (isset($_POST['saveGroup'])) {
        
    $main->newGroup($_POST['groupId'], $_POST['groupName']);
    }





    // Gruppen auslesen
    $rGroup $main->getGroup();
    if (
    $rGroup) {
        foreach(
    $rGroup as $data) {
            
    $groupId                        $data->klb_group_id;
            
    $arr['group']['id'][$groupId]    = $groupId;
            
    $arr['group']['name'][$groupId]    = $data->klb_group_name;
        }
    }

    else {
        echo 
    'Es wurde noch keine Gruppe angelegt';
    }





    // Formular Gruppe
    echo '<form id="groupForm" name="groupForm" action="' $_SERVER['PHP_SELF'] . '" method="post" accept-charset="UTF-8">';
        echo 
    'neue Gruppe anlegen: ';
        echo 
    '<input type="hidden" name="groupId" value="" />';
        echo 
    '<input type="text" name="groupName" value="' . (isset($_POST['groupName']) ? $_POST['groupName'] : '') . '" />';
        echo 
    '<input type="submit" name="saveGroup" value="ok" />';
    echo 
    '</form>';





    // Gruppenliste
    if(isset($arr['group']['id'])) {
        foreach(
    $arr['group']['name'] as $groupId => $value)
        {
            echo 
    $value '<br>';
        }
    }
    ?>
    Vielleicht könnt ihr den Code ja mal unter die Lupe nehmen und mir einige Tipps geben.
    Man friert nur, wenn man glaubt, einem sei kalt

  • #2
    Moin,

    wir starten mit den SQL-Statements. So wie du die aufgeschrieben hast ist es super kacke zu lesen und dadurch super einfach Tippfehler zu übersehen. Schreib die Statements zusammenhängend wann immer es möglich ist. Manche IDEs erkennen auch den Inhalt von Strings und können in den Situationen Syntaxhighlighting anbieten und auf Fehler hinweisen.

    PHP-Code:
        /**
         * @param $groupId
         * @param $groupName
         */
        
    public function create($groupId$groupName) {

            
    $sql = <<<SQL
    INSERT INTO klb_group (klb_group_id, klb_group_name)
    VALUES
    (:groupId, :groupName)
    ON DUPLICATE KEY UPDATE
        klb_group_id = VALUES(klb_group_id)
        klb_group_name = VALUES(klb_group_name)
    SQL;
            
    $stmt $this->connect->db->prepare($sql);
            
    $stmt->execute([
                    
    ':groupId' => $groupId,
                    
    ':groupName' => $groupName
                
    ]);

        } 
    Der nächste Punkt wären Methodennamen. Nenne die Methoden nach dem was sie machen, nutze Verben. Wie in dem Beispiel oben, nicht "newGroup" sondern "create" - oder eben Update oder...


    PHP-Code:
        public function newGroup ($groupId$groupName) {
            
    $group = new Group($this->connect);
            
    $this->newGroup($group);
            
    var_dump($group);
        } 
    Was passiert hier:
    • Initialisierung deines DB-Mappers
    • Alle Gruppen werden selektiert
      • Mit denen wird dann aber nichts gemacht, weil der Konstruktor das Array nicht zurückgeben kann
    • Du ruft die Funktion in der du bist nochmal auf, aber mit falschen Parametern
    • $group->newGroup() wäre die richtige Funktion, aber mit anderen Parametern
    • Fatal Error weil die Parameter falsch sind (?)

    Jetzt möchte ich das Ganze aber so umbauen, dass ich das von der index.php (Hauptseite) aus steuern kann.
    In wie fern steuern? Was genau möchtest du denn machen?
    [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
    [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

    Kommentar


    • #3
      Kurze Anmerkung noch.. Wenn man die NOW-/HEREDOC Syntax nicht so gerne mag, PHP hat auch gar nichts dagegen wenn du es als normals Strings notierst:

      PHP-Code:
          /**
           * @param $groupId
           * @param $groupName
           */
          
      public function create($groupId$groupName) {

              
      $stmt "
                  INSERT INTO klb_group (klb_group_id, klb_group_name)
                  VALUES
                  (:groupId, :groupName)
                  ON DUPLICATE KEY UPDATE
                      klb_group_id = VALUES(klb_group_id)
                      klb_group_name = VALUES(klb_group_name)
              "
      ;

              
      $stmt $this->connect->db->prepare($groupId);
              
      $stmt->execute([
                      
      ':groupId' => $groupId,
                      
      ':groupName' => $groupName
                  
      ]);
          } 
      The string "()()" is not palindrom but the String "())(" is.

      Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
      PHP.de Wissenssammlung | Kein Support per PN

      Kommentar


      • #4
        Zitat von stiff82 Beitrag anzeigen
        PHP-Code:
        try {
        $this->db = new PDO($server$user$password$options);
        }

        catch (
        PDOException $e) {
        echo 
        "Datenbankfehler\n\n" $e->getMessage();

        Das wird dir um die Ohren fliegen, sobald die DB mal nicht erreichbar ist, da du die Exception fängst, aber das Problem ignorierst (Meldung ausgeben ist keine Lösung des Problems) und der Code so tut, als wäre die DB-Verbindung vorhanden.

        => Grundregel für Exception-Handling: fange eine Exception nur dort, wo du das Problem beheben kannst.

        Kommentar


        • #5
          Das
          PHP-Code:
              function __construct($connect) {

                  
          $sGroup "SELECT \n";
                  
          $sGroup.= "    * \n\n";

                  
          $sGroup.= "FROM \n";
                  
          $sGroup.= "    klb_group \n\n\n\n\n";

                  
          // echo '<pre>' . str_replace("\n", '<br>', $sGroup) . '</pre>';

                  
          return $stmt $connect->db->query($sGroup)->fetchAll(PDO::FETCH_OBJ);

              } 
          funktioniert auch nicht. Ein Konstruktor kennt kein Return-Value.

          Kommentar


          • #6
            Die Verbindungsdaten haben in der Klasse nichts verloren. Die gehören in eine Konfigurationsdatei.

            SET NAMES sollte nicht verwendet werden. Gib die Zeichenkodierung doch einfach im DSN an.

            Kommentar


            • #7
              Hallo,

              erstmal Danke für die vielen Verbesserungsvorschläge.
              Ich glaube ich habe alle eure Anregungen berücksichtigen können.

              Ich möchte natürlich OOP von Anfang an richtig machen, deshalb auf in die 2. Runde, ich erwarte euer Feedback


              index.php
              PHP-Code:
              <?php
              function autoloader() {
                  include 
              'connect.inc.php';
                  include 
              'query.inc.php';
              }
              spl_autoload_register('autoloader');

              class 
              Main {

                  public static 
              $connect null;
                  public 
              $result;
                  public 
              $groupId;
                  public 
              $groupName;

                  function 
              __construct() {
                      
              self::$connect = new Connect();
                  }

                  public function 
              selectGroup() {
                      
              $select = new Query();
                      
              $result $select->selectGroup(self::$connect);
                      return 
              $result;
                  }

                  public function 
              createGroup($groupId$groupName) {
                      
              $select = new Query();
                      
              $select->createGroup(self::$connect$groupId$groupName);
                      unset(
              $_POST['groupName']);
                  }

              }


              $main = new Main();





              // neue Gruppe anlegen
              if (isset($_POST['saveGroup'])) {

                  if (
              strlen($_POST['groupName']) == 0) {
                      echo 
              'Bitte Gruppennamen angeben.';
                  }

                  else {
                      
              $main->createGroup($_POST['groupId'], $_POST['groupName']);
                  }

              }





              // Gruppen auslesen
              $rGroup $main->selectGroup();

              if (
              $rGroup) {
                  foreach(
              $rGroup as $data) {
                      
              $groupId                        $data->klb_group_id;
                      
              $arr['group']['id'][$groupId]    = $groupId;
                      
              $arr['group']['name'][$groupId]    = $data->klb_group_name;
                  }
              }

              else {
                  echo 
              'Es wurde noch keine Gruppe angelegt';
              }





              // Formular Gruppe
              echo '<form id="groupForm" name="groupForm" action="' $_SERVER['PHP_SELF'] . '" method="post" accept-charset="UTF-8">';
                  echo 
              'neue Gruppe anlegen: ';
                  echo 
              '<input type="hidden" name="groupId" value="" />';
                  echo 
              '<input type="text" name="groupName" value="' . (isset($_POST['groupName']) ? $_POST['groupName'] : '') . '" />';
                  echo 
              '<input type="submit" name="saveGroup" value="ok" />';
              echo 
              '</form>';





              // Gruppenliste
              if(isset($arr['group']['id'])) {
                  foreach(
              $arr['group']['name'] as $groupId => $value)
                  {
                      echo 
              $groupId ': ' $value '<br>';
                  }
              }
              ?>

              query.inc.php
              PHP-Code:
              <?php
              class Query {

                  public 
              $stmt;





                  
              /**
                   * Datenbank: Gruppendaten ermitteln
                   * 
                   * @param unknown $connect
                   * @return unknown
                   */
                  
              public function selectGroup($connect) {
                      try {
                          
              $stmt $connect->db->prepare("SELECT * FROM klb_group");
                          
              $stmt->execute();
                          return 
              $stmt->fetchAll(PDO::FETCH_OBJ);
                      } catch (
              Exception $e) {
                          echo 
              'Die Gruppendaten konnten nicht ermittelt werden.';
                          exit;
                      }
                  }





                  
              /**
                   * Datenbank: neue Gruppe anlegen/Gruppe ändern
                   * 
                   * @param unknown $connect
                   * @param unknown $groupId
                   * @param unknown $groupName
                   */
                  
              public function createGroup($connect$groupId$groupName) {
                      try {
                          
              $stmt = <<<SQL
              INSERT INTO klb_group
              (
                  klb_group_id,
                  klb_group_name
              )

              VALUES
              (
                  :groupId,
                  :groupName
              )

              ON DUPLICATE KEY UPDATE
                  klb_group_id = VALUES(klb_group_id),
                  klb_group_name = VALUES(klb_group_name)
              SQL;

                          
              $stmt $connect->db->prepare($stmt);
                          
              $stmt->execute([
                              
              ':groupId' => $groupId,
                              
              ':groupName' => $groupName
                          
              ]);
                          echo 
              'Die Daten wurden geändert.';
                      } catch (
              Exception $e) {
                          echo 
              'Die Daten konnten nicht geändert werden.';
                      }
                  }

              }
              ?>

              config.inc.php
              PHP-Code:
              <?php
              define
              ('HOST''mysql:host=xxx;dbname=xxx;charset=utf8');
              define('USER''xxx');
              define('PASSWORD''xxx');
              ?>

              connect.inc.php
              PHP-Code:
              <?php
              require_once ('config.inc.php');

              class 
              Connect {

                  public    
              $db;

                  
              /**
                   * Datenbankverbindung herstellen
                   */
                  
              public function __construct() {
                      try {
                          
              $host        HOST;
                          
              $user        USER;
                          
              $password    PASSWORD;

                          
              $this->db = new PDO($host$user$password);
                          
              $this->db->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);
                      } catch (
              Exception $e) {
                          echo 
              'Datenbankverbindung konnte nicht hergestellt werden.';
                          exit;
                      }
                  }

              }
              ?>
              Man friert nur, wenn man glaubt, einem sei kalt

              Kommentar


              • #8
                Wie jetzt, keiner schreibt was? Alle im Wochenende?
                Ich hätte ja gedacht, mein erbärmlicher Versuch objektorientiert zu programmieren trifft auf wesentlich mehr Widerstand
                Man friert nur, wenn man glaubt, einem sei kalt

                Kommentar


                • #9
                  Zitat von stiff82 Beitrag anzeigen
                  Wie jetzt, keiner schreibt was? Alle im Wochenende?
                  Ich hätte ja gedacht, mein erbärmlicher Versuch objektorientiert zu programmieren trifft auf wesentlich mehr Widerstand
                  Das liegt wohl daran, dass die Liste Deiner Fehler allein ein Buch füllen würde. Sinnvolles OOP kann ich aus Deinem Script nicht erkennen. Alles konzeptloses Wirrwarr. Ich empfehle Dir mal dringen ein Grundlagenbuch durchzulesen, damit wir hier nicht alle Basics durchkauen müssen und Deine Fragen dann gezielter Probleme angehen.
                  bitcoin.de <- Meine Freelancerwährung

                  Kommentar


                  • #10
                    Naja, sieht schonmal um einiges besser aus. Schnell ein paar Punkte vom drübersehen:
                    • In der Main-Klasse sind alle Klassen-Properties, bis auf $connect, unnötig
                    • $connect muss weder static noch public sein
                    • Query ist - in dieser Form - kein guter Klassenname. Bring da irgendeinen Bezug mit rein Was diese Klasse denn queried
                    • In der Query-Klasse wird $stmt immer als lokale Variable innerhalb der Methode genutzt, was auch richtig ist. Die $stmt wird daher auch nicht als Klassen-Property gebraucht
                    Den Rest müsste man sich genauer ansehen.
                    Auf jeden Fall wären da noch die echo-Ausgaben innerhalb von Klassen und die schließenden PHP-Tags in den Klassen-Dateien die ausversehen zu "Header already sent"-Fehlern führen könnten.
                    [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
                    [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

                    Kommentar


                    • #11
                      Such dir einfach ein anderes Thema um OOP zu lernen.
                      PDO ist nämlich schon eine Klasse und bringt somit seine eigenen Methoden mit, das ist zum Erlernen ungeeignet.

                      Als Thema würde sich beispielsweise anbieten eine HTML Klasse zu entwickeln um Ausgaben aus der DB in eine HTML-Tabelle zu generieren.

                      Kommentar


                      • #12
                        Das hier
                        PHP-Code:
                        function autoloader() {
                            include 
                        'connect.inc.php';
                            include 
                        'query.inc.php';
                        }
                        spl_autoload_register('autoloader'); 
                        ist wohl auch Murx. Autoloading von Klassen in PHP funktioniert etwas anders.

                        Wikibooks PHP: Autoloading

                        PHP – Automatisches Laden von Klassen (autoloading)

                        Kommentar


                        • #13
                          Das mit den Exceptions lässt sich auch noch optimieren:

                          https://www.php.de/forum/webentwickl...83#post1520983

                          wobei daer ganze Thread nicht schaden muss.

                          Kommentar


                          • #14
                            Hallo,

                            danke für die bisher vielen Hinweise. Das hilft mir wirklich sehr, damit ich mich in OOP einarbeiten kann.
                            Darf ich eure Zeit für ein weiteres Mal in Anspruch nehmen und euch bitten meinen Code unter die Lupe zu nehmen?

                            Dazu habe ich nochmal drei grundlegende Fragen.

                            1.
                            Wird ein Objekt
                            immer in der aufrufenden Methode erzeugt und an die Klasse weitergereicht oder
                            in der Klassendatei selbst erstellt (in dem Fall muss dann immer eine statische Methode aufgerufen werden?) ?

                            2.
                            Muss man mit Datensätzen immer instantiieren, oder kann man die auch einfach einem Objekt zuweisen und ausgeben via meinem Gruppenbeispiel ?

                            3.
                            siehe index.php, unter der Klasse bei Kommentar: // Gruppenliste anzeigen.
                            In der Else-Anweisung schreibe ich: $main->msg['notice'] = 'Keine Gruppe gefunden.'; . Darf man das so tun, oder muss ich den Eintrag über die Klasse erzeugen?

                            Danke für eure Ratschläge und Hinweise.





                            index.php
                            PHP-Code:
                            <?php
                            /**
                             * weitere Dateien und Klassen laden
                             */
                            try {
                                if(
                            file_exists('autoloader.php') && file_exists('config.inc.php'))
                                {
                                    require_once 
                            'autoloader.php';
                                    require_once 
                            'config.inc.php';
                                }

                                else
                                {
                                    throw new 
                            Exception('angeforderte Dateien nicht gefunden!');
                                }
                            }

                            catch (
                            Exception $e)
                            {
                                echo 
                            $e->getMessage();
                                exit;
                            }










                            class 
                            Main
                            {

                                public 
                            $msg = array(
                                        
                            'error' => array(),
                                        
                            'notice' => '',
                                        
                            'success' => ''
                                
                            );





                                
                            /**
                                 * Datenbankverbindung herstellen
                                 */
                                
                            public function __construct()
                                {
                                    
                            $this->connect = new Connect();
                                    
                            $this->connect->connect();
                                }





                                
                            /**
                                 * Gruppenliste aus Datenbank weitergeben
                                 * 
                                 * @return object
                                 */
                                
                            public function getGroupList()
                                {
                                    return 
                            $this->groupData Group::getGroupList($this->connect);
                                }





                                
                            /**
                                 * neue Gruppe in Datenbank anlegen
                                 * 
                                 * @param int $groupId
                                 * @param string $groupName
                                 */
                                
                            public function createGroup($groupId$groupName)
                                {
                                    if (
                            strlen($groupName) > 0)
                                    {
                                        
                            $group = new Group();
                                        
                            $group->createGroup($this->connect$groupId$groupName);
                                        unset(
                            $_POST['groupName']);
                                    }

                                    else
                                    {
                                        
                            $this->msg['notice'] = '<li>Bitte Gruppenname angeben!</li>';
                                    }
                                }





                                
                            /**
                                 * Seitenmeldungen für User weitergeben
                                 * 
                                 * @param string $type
                                 * @return array
                                 */
                                
                            public function getMsg($type){
                                    return 
                            $this->msg[$type];
                                }

                            }










                            // Ausgabe
                            try
                            {
                                echo 
                            "<!DOCTYPE html>\n";
                                echo 
                            "<html lang="de">\n\n\n\n\n";

                                echo 
                            "<head>";
                                echo 
                            "    <meta http-equiv="content-type" content="text/htmlcharset=UTF-8">\n";
                                echo 
                            "    <title>Test</title>\n";
                                echo 
                            "</head>\n\n\n\n\n";

                                echo 
                            "    <body>";





                                
                            $main = new Main();





                                
                            // neue Gruppe in Datenbank anlegen
                                
                            if (isset($_POST['saveGroup']))
                                {
                                    
                            $main->createGroup($_POST['groupId'], $_POST['groupName']);
                                }
                                echo 
                            '<form id="groupForm" name="groupForm" action="' $_SERVER['PHP_SELF'] . '" method="post" accept-charset="UTF-8">';
                                    echo 
                            '<input type="hidden" name="groupId" value="">';
                                    echo 
                            '<input type="text" name="groupName" value="' . (isset($_POST['groupName']) ? $_POST['groupName'] : '') . '">';
                                    echo 
                            '<input type="submit" name="saveGroup" value="ok">';
                                echo 
                            '</form>';





                                
                            // Gruppenliste anzeigen
                                
                            $groupData $main->getGroupList();
                                if (
                            count($groupData) > 0)
                                {
                                    foreach(
                            $main->groupData as $dataGroup)
                                    {
                                        echo 
                            $dataGroup->klb_group_id ': ' $dataGroup->klb_group_name '<br>';
                                    }
                                }

                                else
                                {
                                    
                            $main->msg['notice'] = 'Keine Gruppe gefunden.';
                                }





                                
                            // Seitenneldungen für User ausgeben

                                
                            $msgError $main->getMsg('error');
                                if (
                            count($msgError) > 0)
                                {
                                    echo 
                            'Fehler:';
                                    echo 
                            '<ul>';
                                        foreach(
                            $msgError as $key => $value)
                                        {
                                            echo 
                            $value;
                                        }
                                    echo 
                            '</ul>';
                                }

                                
                            $msgNotice $main->getMsg('notice');
                                if (
                            count($msgError) == && strlen($msgNotice) > 0)
                                {
                                    echo 
                            'Hinweis:<br>';
                                    echo 
                            $msgNotice;
                                }





                            }

                            catch (
                            Exception $e)
                            {
                                echo 
                            $e->getMessage();
                            }





                            echo 
                            "</body>";
                            echo 
                            "</html>";
                            autoloader.php
                            PHP-Code:
                            <?php
                            spl_autoload_register
                            (function($className)
                            {

                                try {
                                        
                            // File exists
                                        
                            if (file_exists($className))
                                        {
                                            require_once(
                            $className);
                                        }

                                        else
                                        {
                                            throw new 
                            Exception('Die Klasse ' $className ' konnte nicht geladen werden!');
                                        }

                                } 

                                catch (
                            Exception $e)
                                {
                                    throw 
                            $e;
                                }

                            });
                            Connect.php
                            PHP-Code:
                            <?php
                            class Connect
                            {

                                public 
                            $db null;

                                
                            /**
                                 * Datenbankverbindung herstellen
                                 * @return PDO
                                 */
                                
                            public function connect()
                                {
                                    if (
                            defined('DSN') && defined('DBUSER') && defined('DBPW'))
                                    {
                                        if (
                            $this->db === null)
                                        {
                                            
                            $this->db = new PDO(DSNDBUSERDBPW, array
                                                                    (
                                                                        
                            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
                                                                        
                            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ
                                                                    
                            )
                                                                );
                                        }
                                    }

                                    else
                                    {
                                        throw new 
                            Exception('Es konnte keine Datenbankverbindung hergestellt werden.');
                                    }
                                }
                            }
                            Group.php
                            PHP-Code:
                            <?php
                            class Group
                            {

                                
                            /**
                                 * Gruppenlsite aus Datenbank auslesen
                                 * 
                                 * @param object $connect
                                 * @return object
                                 */
                                
                            public static function getGroupList($connect)
                                {
                                    
                            $stmt $connect->db->prepare('SELECT * FROM klb_group');
                                    
                            $stmt->execute();
                                    return 
                            $result $stmt->fetchAll();
                                }





                                
                            /**
                                 * neue Gruppe in Datenbank anlegen
                                 * 
                                 * @param object $connect
                                 * @param int $groupId
                                 * @param string $groupName
                                 */
                                
                            public function createGroup($connect$groupId$groupName)
                                {

                                    
                            $stmt = <<<SQL
                            INSERT INTO klb_group
                            (
                                klb_group_id,
                                klb_group_name
                            )

                            VALUES
                            (
                                :groupId,
                                :groupName
                            )

                            ON DUPLICATE KEY UPDATE
                                klb_group_id = VALUES(klb_group_id),
                                klb_group_name = VALUES(klb_group_name)
                            SQL;

                                    
                            $stmt $connect->db->prepare($stmt);
                                    
                            $stmt->execute([
                                        
                            ':groupId' => $groupId,
                                        
                            ':groupName' => $groupName
                                    
                            ]);

                                }

                            }
                            Man friert nur, wenn man glaubt, einem sei kalt

                            Kommentar


                            • #15
                              was auch immer die classe Main soll,

                              Main->getGrouplist() und Group->getGropulist() ist doch das selbe, oder?
                              den ganzen Code -- inclusive html Ausgabe -- in Try /catch zu wrappen ist auch nicht das gelbe vom ei.

                              Kommentar

                              Lädt...
                              X