Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
faecher:informatik:oberstufe:datenbanken:projekt:dokuwiki_plugin:probeprojekt:start [09.06.2021 13:29] – 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: | ||
+ | |||
+ | ===== 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 " | Erweitere die bisherige Arbeit am Plugin auf ein " | ||
Zeile 5: | Zeile 96: | ||
(1) Lege die {{: | (1) Lege die {{: | ||
- | (2) Erstelle ein -- zunächst einfaches -- Abfrageformular, | + | (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]] | ||
- | (3) Nachdem die Grundfunktionalität sichergestellt ist, kannst du das Abfrageformular un die Programmlogik um weitere Funktionen erweitern. (Sortierung, |