Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Nächste Überarbeitung | Vorherige Überarbeitung | ||
faecher:informatik:oberstufe:datenbanken:projekt:dokuwiki_plugin:probeprojekt:start [09.06.2021 13:20] – angelegt sbel | faecher:informatik:oberstufe:datenbanken:projekt:dokuwiki_plugin:probeprojekt:start [22.05.2023 16:25] (aktuell) – [Aufgaben] Frank Schiebel | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Probeprojekt | + | ====== Probeprojekt: Adresslistenabfrage |
- | Erweitere die bisherige Arbeit am Plugin auf ein Klassenlistenausgabewerkzeug: | + | ===== 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 " | ||
+ | |||
+ | Beispielsweise könnte man eine " | ||
+ | |||
+ | Hilfreich ist vielleicht auch ein Attribut, das die abzufragende Tabelle(n) beinhaltet, ein passender Setter wäre da auch günstig. | ||
+ | |||
+ | |||
+ | |||
+ | <code php> | ||
+ | class mysqldb { | ||
+ | |||
+ | /** | ||
+ | * Connect to db, set connection attribute to pdo object | ||
+ | * | ||
+ | * @param string | ||
+ | * @param string | ||
+ | * @param string | ||
+ | * @param string | ||
+ | */ | ||
+ | function __construct($dbusername, | ||
+ | |||
+ | try { | ||
+ | $pdo = new PDO(" | ||
+ | $pdo-> | ||
+ | |||
+ | } catch ( PDOException $e ) { | ||
+ | echo ' | ||
+ | exit(); | ||
+ | } | ||
+ | |||
+ | $this-> | ||
+ | |||
+ | } | ||
+ | |||
+ | /** | ||
+ | * Get pdo object for usage in other classes | ||
+ | */ | ||
+ | function getConnection() { | ||
+ | return $this-> | ||
+ | } | ||
+ | |||
+ | /** | ||
+ | * Set attribute query table to given value | ||
+ | * | ||
+ | * @param string | ||
+ | */ | ||
+ | function setQueryTable($tables) { | ||
+ | $this-> | ||
+ | } | ||
+ | |||
+ | /** | ||
+ | * Make query, return array with results | ||
+ | * | ||
+ | * @param string | ||
+ | * | ||
+ | * @return array Query result | ||
+ | */ | ||
+ | function searchName($searchname) { | ||
+ | $statement= $this-> | ||
+ | // | ||
+ | $statement-> | ||
+ | |||
+ | // Besonderheit, | ||
+ | // $statement-> | ||
+ | // https:// | ||
+ | // 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-> | ||
+ | // Die Zeilen an das Array anhängen (Push) | ||
+ | $resultArray[] = $row; | ||
+ | } | ||
+ | |||
+ | // For Debugging | ||
+ | // print_r($resultArray); | ||
+ | |||
+ | // Ergebnisarray zurückgeben | ||
+ | return $resultArray; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ===== Aufgaben ===== | ||
+ | |||
+ | |||
+ | {{: | ||
+ | === (A1) === | ||
+ | |||
+ | Erweitere die bisherige Arbeit am Plugin auf ein " | ||
+ | |||
+ | (1) Lege die {{: | ||
+ | |||
+ | (2) Ergänze dein Plugin um eine Konfigurations-Option " | ||
+ | |||
+ | (3) Erstelle ein -- zunächst einfaches -- Abfrageformular, | ||
+ | |||
+ | (4) Nachdem die Grundfunktionalität sichergestellt ist, kannst du das Abfrageformular und die Programmlogik um weitere Funktionen erweitern. (Sortierung, | ||
+ | |||
+ | ---- | ||
+ | {{: | ||
+ | === (A2) === | ||
+ | |||
+ | 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:// | ||
+ | |||
+ | (1) Welches der Formulare angezeigt werden soll, kann z.B. durch den Parameter nach dem ''>'' | ||
+ | |||
+ | {{projekt> | ||
+ | {{projekt> | ||
+ | |||
+ | (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]] | ||
- | * |