Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
de:entwickler:tabellenzugriffsklassen [2009/12/23 13:16] – fasse | de:entwickler:tabellenzugriffsklassen [2012/05/12 00:43] (current) – [Wie lege ich einen neuen Datensatz an ?] thomas-rcv | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== | + | ====== |
+ | ==== Wie erstelle ich ein Objekt der Klasse ? ==== | ||
+ | Für den Zugriff auf einzelne Datensätze aus Datenbanktabellen stellt Admidio die **TableAccess**-Zugriffsklasse zur Verfügung. Damit wird der Zugriff und die Pflege einzelner Datensätze erheblich vereinfacht. Diese Dokumentation beschreibt Funktionen ab Version 2.2 . | ||
- | ==== Warum sind Tabellenklassen notwendig ? ==== | + | Die Klasse kann auf jede Datenbanktabelle angewandt werden. Willst du zum Beispiel mit einem Datensatz der folgenden Tabelle **MeineTabelle** arbeiten:< |
+ | ( | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | )</ | ||
+ | **MeineTabelle** ist der Tabellenname der Tabelle auf die Zugegriffen werden soll\\ | ||
+ | **meine** ist das Spaltenpräfix der Tabelle\\ | ||
+ | **5** wäre in diesem Fall die Nummer der **meine_id**, | ||
- | Die Tabellenklassen sollen den Zugriff auf die jeweilige Tabelle erleichtern | + | ==== Wie kann ich Daten auslesen und ändern ? ==== |
+ | Ist das Objekt mit einer bestimmten ID eingelesen, so können | ||
+ | $adresse = $meinTabellenObjekt-> | ||
+ | Eine Besonderheit gibt es bei Datums- | ||
+ | $geburtstag = $meinTabellenObjekt-> | ||
+ | echo $geburtstag | ||
+ | $geburtstag = $meinTabellenObjekt-> | ||
+ | echo $geburtstag | ||
+ | Daten ändern und speichern geht dann so:<code php> | ||
+ | $meinTabellenObjekt-> | ||
+ | $meinTabellenObjekt-> | ||
+ | Auch beim Speichern gibt es für Datum- und Zeitfelder eine Besonderheit. Hier **muss** das Datum nach [[http://de.wikipedia.org/ | ||
- | Seit der Version 2.0 sind die vorhandenen Tabellenklassen überarbeitet und einige Neue hinzugefügt. Sinn der Überarbeitung war die wiederholenden Methoden, welche in jeder Klasse vorkamen in eine übergeordnete Klasse | + | ==== Wie lege ich einen neuen Datensatz an ? ==== |
+ | Einen neuen Datensatz anlegen funktioniert eigentlich genauso, wie einen Datensatz zu verändern. Es darf vorher nur nicht mit einer ID ein Datensatz eingelesen werden. <code php> | ||
+ | $meinTabellenObjekt-> | ||
+ | $meinTabellenObjekt-> | ||
+ | $meinTabellenObjekt-> | ||
+ | $meinTabellenObjekt-> | ||
+ | $meinTabellenObjekt-> | ||
+ | $meinTabellenObjekt-> | ||
- | ==== Die Mutterklasse TableAccess | + | ==== Wie kann ich Änderungszeitstempel und Benutzer bequem speichern ? ==== |
+ | Die **TableAccess**-Klasse kann den Zeitstempel und die Benutzer-ID desjenigen speichern, der den Datensatz angelegt, sowie desjenigen, der ihn als letztes geändert hat. Dazu müssen die entsprechenden Spalten in der Tabelle nur einem bestimmten Namenschema folgen. Die Aktualisierung der Felder wird dann komplett von der Klasse erledigt, sobald die Methode **save()** aufgerufen wird. | ||
+ | Die Felder müssen wie folgt definiert sein:< | ||
+ | meine_timestamp_create | ||
+ | meine_usr_id_change | ||
+ | meine_timestamp_change | ||
- | Mit Version 2.2 muss die Klasse TableAccess | + | Möchte man die Aktualisierung der Felder an einer bestimmten Stelle |
- | Sollen allerdings abhängige Daten mit gelöscht oder beim Speichern bestimmte Spalten automatisch mit einem aktuellen Zeitstempel befüllt werden, so muss die Klasse abgeleitet und die einzelnen Funktionen ggf. überschrieben werden. Im Konstruktor der abgeleiteten Klasse muss dann der Konstruktor von TableAccess mit den entsprechenden Übergaben aufgerufen werden. Danach kann jede beliebige Methode überschrieben werden. | + | ==== Welche Methoden stehen zur Verfügung ? ==== |
- | + | Folgende | |
- | Ein gutes Beispiel für eine abgeleitete Klasse ist **TableGuestbook**-Klasse: | + | |
- | <code php> | + | |
- | { | + | |
- | parent:: | + | |
- | }</ | + | |
- | Mit diesen Informationen funktionieren dann auch schon alle Methoden | + | |
* **readData** liest den entsprechenden Datensatz aus der Datenbank aus. Mit speziellen Übergaben kann hier das SQL-Statement noch verändert werden (Bsp: roles_class.php) | * **readData** liest den entsprechenden Datensatz aus der Datenbank aus. Mit speziellen Übergaben kann hier das SQL-Statement noch verändert werden (Bsp: roles_class.php) | ||
* **clear** initialisiert alle eingelesenen Daten. Die Methode kann in der spezifischen Klasse abgeleitet werden um dort dann noch weitere Daten zu initialisieren (Bsp: organization_class.php) | * **clear** initialisiert alle eingelesenen Daten. Die Methode kann in der spezifischen Klasse abgeleitet werden um dort dann noch weitere Daten zu initialisieren (Bsp: organization_class.php) |