faecher:informatik:oberstufe:datenbanken:projekt:dokuwiki_plugin:probeprojekt:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
faecher:informatik:oberstufe:datenbanken:projekt:dokuwiki_plugin:probeprojekt:start [10.06.2021 09:17] sbelfaecher:informatik:oberstufe:datenbanken:projekt:dokuwiki_plugin:probeprojekt:start [22.05.2023 16:25] (aktuell) – [Aufgaben] Frank Schiebel
Zeile 2: Zeile 2:
  
 ===== Vertiefung Datenbank-Klasse ===== ===== Vertiefung Datenbank-Klasse =====
 +
 +Zunächst machen wir uns noch ein paar Gedanken darüber, wie wir die Datenbank Klasse erweitern können, so dass diese nicht nur "Objekte mit Datenbankverbindung" instanziieren kann, sondern mit dieser Datenbankverbindung auch noch was anfangen kann, beispielsweise eine Abfrage ausführen.
 +
 +Beispielsweise könnte man eine "Getter"-Methode implementieren, die das Datenbankhandle zurückliefert, so dass man dieses in anderen Klassen (die es noch nicht gibt) weiter verwenden könnte. Eventuell wäre aber auch Vererbung besser geeignet, das überlegen wir uns zu gegebener Zeit - schaden tuts ja erst man nichts? Also los...
 +
 +Hilfreich ist vielleicht auch ein Attribut, das die abzufragende Tabelle(n) beinhaltet, ein passender Setter wäre da auch günstig.
 +
 +
  
 <code php> <code php>
Zeile 7: Zeile 15:
  
     /**     /**
-     * Connect to db, return handle+     * Connect to db, set connection attribute to pdo object
      *      *
      * @param string        $dbusername   DB username      * @param string        $dbusername   DB username
Zeile 13: Zeile 21:
      * @param string        $dbname       Database to connect to      * @param string        $dbname       Database to connect to
      * @param string        $host         Database host to connect to (optional)      * @param string        $host         Database host to connect to (optional)
-     * 
-     * @return object       DB-Handle  
      */      */
-    function mysqldb($dbusername, $dbpassword, $dbname, $host="localhost" ) {+    function __construct($dbusername, $dbpassword, $dbname, $host="localhost" ) {
  
     try {     try {
Zeile 30: Zeile 36:
  
     }     }
 +     
 +    /** 
 +    * Get pdo object for usage in other classes 
 +    */
     function getConnection() {     function getConnection() {
         return $this->connection;         return $this->connection;
     }     }
- +     
-    function setQueryTable($table) { +    /** 
-        $this->qtable = $table;+    * Set attribute query table to given value 
 +    * 
 +    * @param string        $tables   Tables 
 +    */ 
 +    function setQueryTable($tables) { 
 +        $this->qtable = $tables;
     }     }
 +     
 +    /** 
 +     * Make query, return array with results 
 +     * 
 +     * @param string        $searchnane  Name to search 
 +     * 
 +     * @return array        Query result  
 +     */
     function searchName($searchname) {     function searchName($searchname) {
         $statement= $this->connection->prepare("SELECT * FROM $this->qtable WHERE Nachname LIKE :nachname");         $statement= $this->connection->prepare("SELECT * FROM $this->qtable WHERE Nachname LIKE :nachname");
Zeile 44: Zeile 65:
         $statement->execute(array('nachname' => "%$searchname%"));          $statement->execute(array('nachname' => "%$searchname%")); 
                  
-        // $statement->fetch() leifert das Ergebnis der Abfrage zeilenweise+        // Besonderheit, weil wir ein Array wollen - Kapselung! 
 +        // $statement->fetch() liefert das Ergebnis der Abfrage zeilenweise
         // https://www.php.net/manual/de/pdostatement.fetch.php         // https://www.php.net/manual/de/pdostatement.fetch.php
         // Für uns ist es meist besser ein assoziatives Array          // Für uns ist es meist besser ein assoziatives Array 
Zeile 84: Zeile 106:
 === (A2) === === (A2) ===
  
-Erweitere dein Plugin um ein Formular, mit dem ein neuer Datensatz an die Tabelle angefügt werden kann. +Ergänze bei deinem Plugin ein Formular, mit dem ein neuer Datensatz an die Tabelle angefügt werden kann. Erweitere deine DB Klasse um eine entsprechende Methode. Hinweise zur Datenmanipulation mit Prepared Statements findest du z.B. [[https://www.php-einfach.de/mysql-tutorial/daten-einfuegen/|hier]]
  
 (1) Welches der Formulare angezeigt werden soll, kann z.B. durch den Parameter nach dem ''>'' gesteuert werden: (1) Welches der Formulare angezeigt werden soll, kann z.B. durch den Parameter nach dem ''>'' gesteuert werden:
Zeile 92: Zeile 114:
      
 (2) Beachte Sicherheitsaspekte und führe eine Eingabeüberprüfung durch, bevor du die Eingabedaten an deine Abfrage übergibst. (2) Beachte Sicherheitsaspekte und führe eine Eingabeüberprüfung durch, bevor du die Eingabedaten an deine Abfrage übergibst.
 +
 +
 +----
 +Du hängst fest? -> [[.hilfestellung|Hilfestellung]] 
 +
  • faecher/informatik/oberstufe/datenbanken/projekt/dokuwiki_plugin/probeprojekt/start.1623316663.txt.gz
  • Zuletzt geändert: 10.06.2021 09:17
  • von sbel