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

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
faecher:informatik:oberstufe:datenbanken:projekt:dokuwiki_plugin:probeprojekt:start [10.06.2021 11:36] sbelfaecher:informatik:oberstufe:datenbanken:projekt:dokuwiki_plugin:probeprojekt:start [Unbekanntes Datum] (aktuell) – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1
Zeile 1: Zeile 1:
-====== Probeprojekt: Adresslistenabfrage ====== 
  
-===== Vertiefung Datenbank-Klasse ===== 
- 
-<code php> 
-class mysqldb { 
- 
-    /** 
-     * Connect to db, set connection attribute to pdo object 
-     * 
-     * @param string        $dbusername   DB username 
-     * @param string        $dbpassword   DB password 
-     * @param string        $dbname       Database to connect to 
-     * @param string        $host         Database host to connect to (optional) 
-     */ 
-    function mysqldb($dbusername, $dbpassword, $dbname, $host="localhost" ) { 
- 
-    try { 
-        $pdo = new PDO("mysql:host=$host;dbname=$dbname", "$dbusername", "$dbpassword"); 
-        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
- 
-    } catch ( PDOException $e ) { 
-        echo 'Verbindung zur Datenbank fehlgeschlagen: ' . $e->getMessage(); 
-        exit(); 
-    } 
- 
-    $this->connection = $pdo; 
- 
-    } 
-     
-    /** 
-    * Get pdo object for usage in other classes 
-    */ 
-    function getConnection() { 
-        return $this->connection; 
-    } 
-     
-    /** 
-    * Set attribute query table to given value 
-    * 
-    * @param string        $dbusername   DB username 
-    * @param string        $dbpassword   DB password 
-    * @param string        $dbname       Database to connect to 
-    * @param string        $host         Database host to connect to (optional) 
-    * 
-    * @return object       DB-Handle  
-    */ 
-    function setQueryTable($table) { 
-        $this->qtable = $table; 
-    } 
-/** 
-     * Connect to db, set connection attribute to pdo object 
-     * 
-     * @param string        $dbusername   DB username 
-     * @param string        $dbpassword   DB password 
-     * @param string        $dbname       Database to connect to 
-     * @param string        $host         Database host to connect to (optional) 
-     * 
-     * @return object       DB-Handle  
-     */ 
-    function searchName($searchname) { 
-        $statement= $this->connection->prepare("SELECT * FROM $this->qtable WHERE Nachname LIKE :nachname"); 
-        //$statement->execute(array($table,$searchname));  
-        $statement->execute(array('nachname' => "%$searchname%"));  
-         
-        // $statement->fetch() leifert das Ergebnis der Abfrage zeilenweise 
-        // https://www.php.net/manual/de/pdostatement.fetch.php 
-        // Für uns ist es meist besser ein assoziatives Array  
-        // mit den Ergebnissen zurückzugeben das dann gerendert werden 
-        // kann 
-        // Leeres Array definieren 
-        $resultArray = array(); 
-        while($row = $statement->fetch(PDO::FETCH_ASSOC)) { 
-            // Die Zeilen an das Array anhängen (Push) 
-            $resultArray[] = $row; 
-        } 
- 
-        // For Debugging 
-        // print_r($resultArray); 
-         
-        // Ergebnisarray zurückgeben 
-        return $resultArray; 
-    } 
-</code> 
- 
-===== Aufgaben ===== 
- 
- 
-{{:aufgabe.png?nolink  |}} 
-=== (A1) === 
- 
-Erweitere die bisherige Arbeit am Plugin auf ein "Adresslistenausgabewerkzeug": 
- 
-(1) Lege die {{:faecher:informatik:oberstufe:datenbanken:projekt:dokuwiki_plugin:probeprojekt:adressen.sql.zip |fiktive Adressdatenbank}} zugrunde,  importiere die Adresstabelle in deine mysql-DB um sie dann abzufragen. 
- 
-(2) Ergänze dein Plugin um eine Konfigurations-Option "databasetable", damit du in der Konfiguration festlegen kannst, welche Tabelle abgefragt werden soll. 
- 
-(3) Erstelle ein -- zunächst einfaches -- Abfrageformular, mit dem du z.B. anhand des Vor- und/oder Nachnamens nach der Adresse einer Person suchen kannst. Implementiere die Abfrage als Methode in der mysqldb-Klasse, die das DB-Handle und die Abfrageparameter erhält und ein Array mit dem Ergebnis der Abfrage zurückgibt. Dieses Array kann die render Funktion dann als  hübsche Tabelle ausgeben. 
- 
-(4) Nachdem die Grundfunktionalität sichergestellt ist, kannst du das Abfrageformular und die Programmlogik um weitere Funktionen erweitern. (Sortierung, weitere Felder, optionale Suche nach Teilstrings in Datenbankfeldern u.v.m.) 
- 
----- 
-{{:aufgabe.png?nolink  |}} 
-=== (A2) === 
- 
-Erweitere dein Plugin um ein Formular, mit dem ein neuer Datensatz an die Tabelle angefügt werden kann.  
- 
-(1) Welches der Formulare angezeigt werden soll, kann z.B. durch den Parameter nach dem ''>'' gesteuert werden: 
- 
-  {{projekt>abfrage}} // rendert und bearbeitet die Abfrage 
-  {{projekt>eingabe}} // rendert und bearbeitet das Eingabeformular 
-   
-(2) Beachte Sicherheitsaspekte und führe eine Eingabeüberprüfung durch, bevor du die Eingabedaten an deine Abfrage übergibst. 
  • faecher/informatik/oberstufe/datenbanken/projekt/dokuwiki_plugin/probeprojekt/start.1623317780.txt.gz
  • Zuletzt geändert: 10.06.2021 11:36
  • von sbel