Next: Zusammensetzung des Parameter-Array $modul_param
Up: DB-Table-Submodule
Previous: DB-Table-Submodule
In einem Workflow-Schritt können Inhalte einer Datenbank dargestellt
und darüber hinaus Datenmanipulationen vorgenommen werden. Dazu sollen
in den Modul-Skripten die Funktionen 'modul_tabelle' und 'modul_tabelle_list'
verwendet werden, die von der Library 'lib_dbtable.inc.php' zur Verfügung
gestellt werden. Die Bibliothek 'lib_dbtable' greift ihrerseits auf
verschiedene andere Bibliotheken zurück, wobei zwei hervorzuheben
sind:
- 'lib_sql.inc.php': Diese Library stellt DBMS-unabhängige Funktionen
für den DB-Zugriff bereit. Beispielhaft sei die Funktion 'db_query
($query)' erwähnt. Beim Aufruf führt diese Funktion die übergebene
SQL-Anfrage durch und liefert einen Result-Handler zurück. Mit Hilfe
des Result-Handlers kann dann auf die Ergebnisse der Anfrage zugegriffen
werden.
- 'lib_html.inc.php': Bei der HTML-Ausgabe ist immer wieder eine Folge
von gleichen oder ähnlichen HTML-Tags notwendig. Die lib_html-Library
bietet Funktionen, um bestimmte Tag-Folgen zu generieren. Dabei können
diesen Funktionen Daten übergeben werden, die von den Tags umschlossen
werden sollen. Die Library bietet dabei Funktionen für einfache, aber
auch komplexe Tag-Folgen. Beispielsweise kann mit der Funktion 'html_table
($data, ...)' eine komplette HTML-Tabelle erzeugt werden, die die
im Array $data übergebenen Inhalte darstellt.
Die Library 'lib_dbtable.inc.php' stellt dabei das Verbindungsglied
dar. Sie extrahiert Daten aus der Datenbank, stellt diese Daten sinnvoll
dar, bietet Interaktionsmöglichkeiten zur Datenmanipulation und führt
diese Datenmanipulationen schließlich durch. Die Aufgaben im einzelnen:
- Die Library führt DB-Anfragen durch, die von den Modul-Skripten übergeben
werden.
- Dabei werden die Anfragen zuvor einer einfachen Überprüfung unterzogen
und falls nötig ergänzt.
- Im Falle einer SELECT-Anfrage wird das Ergebnisse in eine HTML-Tabelle
eingebaut und ausgegeben.
- Da die Ergebnismenge einer SELECT-Anfrage sehr groß sein kann, bietet
'lib_dbtable.inc.php' folgende Unterstützungen:
- Die Daten können seitenweise ausgegeben werden. In die HTML-Ausgabe
werden Links integriert, um in den Seiten zu blättern.
- Man hat die Möglichkeit die Ergebnismenge aus der Workflow-Anwendung
heraus einzuschränken.
- Innerhalb der Ergebnismenge kann aus der Workflow-Anwendung heraus
nach verschiedenen Kriterien gesucht werden.
- Der Anwender kann die Sortierreihenfolge der Ergebnisse beeinflussen.
- Für die Datenmanipulation werden Links oder Buttons in die HTML-Ausgabe
eingefügt, mit deren Hilfe Aktionen ausgelöst werden können, um ein
oder mehrere Datentupel hinzuzufügen, zu ändern oder zu löschen.
Für die Darstellung und Datenmanipulation verwendet die Library Default-Werte,
die in den Modul-Skripten jedoch angepasst werden können. Die Darstellungsparameter,
die Parameter für DB-Queries und die Parameter für die zu unterstützenden
Aktionen werden alle in einem großen Array $modul_param zusammengefasst.
Dieses Array wird der Funktion 'modul_tabelle ($modul_param)' übergeben.
In einem Modul-Skript können durchaus mehrere DB-Table-Submodule enthalten
sein. Dabei sind aber eventuelle Datenabhängigkeiten zwischen den
Submodulen zu berücksichtigen. Zum Verständnis stelle man sich folgendes
Beispiel-Modul vor: Zuerst werden in einer Tabelle, die einer bestimmten
Veranstaltung zugeordneten Mitarbeiter dargestellt. Darunter werden
alle verfügbaren - auch die nicht zugeteilten - Mitarbeiter des Lehrstuhls
ausgegeben, um gegebenenfalls einen weiteren Mitarbeiter der Veranstaltung
zuweisen zu können. Die beiden Mitarbeitertabellen werden durch zwei
getrennte Aufrufe der Funktion 'modul_tabelle ($modul_param)' erzeugt.
Angenommen die Tabelle mit allen Mitarbeitern bietet die Möglichkeit
die Namen der Mitarbeiter zu ändern, um z. B. einen Schreibfehler
auszubessern. Der Mitarbeiter Maier, der auch der Veranstaltung zugeteilt
ist - also in beiden Tabellen auftaucht - schreibt sich korrekt Mair.
Die Datenänderung wird in der unteren Tabelle vorgenommen. Nach der
Bestätigung wird die HTML-Seite mit dem Modul und den beiden Tabellen
neu aufgebaut. Die Datenänderung geschieht erst beim Aufbau der zweiten
Tabelle, also mit dem zweiten Aufruf von 'modul_tabelle ($modul_param)'.
Die erste Tabelle weiß deshalb von der Datenänderung noch nichts,
und der Name erscheint dort nach wie vor in der falschen Schreibweise.
Um dieses Problem zu umgehen bietet die Funktion ein zweites Argument:
'modul_tabelle ($modul_param, $update_only)'. Wird in $update_only
'true' übergeben (Standardwert: 'false'), werden nur die Datenmanipulationen
auf der Datenbank durchgeführt, es erfolgt aber keine HTML-Ausgabe.
Um das Problem zu umgehen, würde man die Funktion 'modul_tabelle
($modul_param, $update_only)' dreimal aufrufen:
- 1.
- Aufruf für die zweite Tabelle ohne HTML-Ausgabe ($update_only=true).
- 2.
- Aufruf für die erste Tabelle mit HTML-Ausgabe ($update_only=false).
- 3.
- Erneuter Aufruf für die zweite Tabelle diesmal mit HTML-Ausgabe ($update_only=false).
Zur Vereinfachung kann auch die Funktion 'modul_tabelle_list ($modul_param1,
$modul_param2, ...)' verwendet werden. Dieser Funktion können in
einer variablen Argumentliste die Parameter-Arrays für jedes DB-Table-Submodul
übergeben werden. Die Funktion ruft ihrerseits für jedes Submodul
modul_param zweimal auf - einmal zum Update der Datenbank und einmal
für die HTML-Ausgabe.
Next: Zusammensetzung des Parameter-Array $modul_param
Up: DB-Table-Submodule
Previous: DB-Table-Submodule
Copyright Munich Network Management Team