FlatBox - Dokumentation

6. Funktionsreferenz

6.3 Grundfunktionen (BIOS)

int Errorcode flat_rec_insert ( string Filename, Referenz Array Insertdata )

Filename muss ein gültiger Pfad zu einer Datei sein, welche versucht wird zu öffnen. Existiert die Datei nicht, so wird versucht diese anzulegen.
Das Array Insertdata kann mehrere Datensätze enthalten, die eingefügt werden sollen, dabei muss jedoch auf eine bestimmte Struktur geachtet werden, in der die Daten in Insertdata vorliegen müssen. Inserdata muss ein indiziertes Array mit dem namen data enthalten, wobei jeder Indes in Insertdata["data"] als ein Datensatz behandelt wird.
Wie dann die Daten in dem Datensatzarray vorliegen (nur als einzelne Variablen oder mit weiteren mehrstufigen Arrays) ist egal.

Da Insertdata als Referenz übergeben wird, lohnt sich nach Aufruf der Funktion noch mal ein ausgeben des Arrays durch z.B. print_r(). Würde man der Funktion z.B. folgendes Array als Insertdata übergeben:

Array
(
    [data] => Array
        (
            [0] => Array
                (
                    [name] => foobar
                    [value] => blabla
                )
            [1] => Array
                (
                    [name] => Dennis
                    [value] => Halloooooooooooo??
                )
            [2] => Array
                (
                    [name] => Thomas
                    [value] => Schweigen ist Gold wert.
                )
            [3] => Array
                (
                )
        )
)

So sähe dieses Array nach dem Funktionsaufruf in etwas so aus:

Array
(
    [data] => Array
        (
            [3] => Array
                (
                )
        )
    [meta] => Array
        (
            [rec_inserted] => 3
            [rec_denied] => 1
        )
    [rec_inserted] => Array
        (
            [0] => Array
                (
                    [new_id] => 1
                )
            [1] => Array
                (
                    [new_id] => 2
                )
            [2] => Array
                (
                    [new_id] => 3
                )
        )
    [denied] => Array
        (
            [3] => Array
                (
                )
        )
)

Wie zu sehen ist, wurde ein Meta Array angelegt, das Informationen darüber ausgibt, wie viele Datensätze akzeptiert, d.h. erfolgreich eingetragen und wie viele Datensätze abgelehnt, d.h. nicht eingetragen werden konnten.
In rec_inserted findet man noch einmal alle eingetragenen Datensätze unter dem Index, den diese ursprünglich in data hatten mit Informationen über die neue ID, die dieser Datensatz im Flatfile hat. Ferner wurden alle erfolgreich eingetragenen Datensätze aus der Auftragsliste data gelöscht.

In denied sind explizit alle Datensätze zu finden (wie in rec_inserted auch hier unter dem Ursprungsindex) welche nicht eingetragen werden konnten. Grund dafür könnte z.B. sein, dass der Datensatz leer war.

Hinweis: Achten Sie darauf, dass Sie - wenn Sie das Array Insertdata bearbeiten und danach erneut flat_rec_insert() übergeben wollen - meta und denied im Array löschen müssen, da sich die Funktion sonst über alte, fehlerhafte Datensätze beschwert.

int Errorcode flat_rec_select ( string Filename, Referenz Array Insertdata )

Diese Funktion dient dazu - wie der Name eigentlich schon sagt - alle vorhandenen Datensätze in einem Flatfile auszulesen und zurückzugeben. Als Filename muss der Pfad zu einer existierenden Datei angegeben werden, welche auch von der FlatBox erzeugt wurde bzw. das Format eines FlatBox Flatfiles hat.
Für Datensätze sollte man der Funktion einfach ein leeres Array übergeben, welches nach dem Funktionsaufruf dann mit den entsprechenden Informationen gefüllt ist. Dabei handelt es sich um ein indiziertes Array, welches zweit weitere Arrays namens meta und data enthält.
Das Array meta enthält alle Daten des meta-Arrays aus dem Flatfile, sowie zwei weitere Indexe namens rec_selected und rec_denied. In rec_selected steht die Anzahl der Datensätze, die erfolgreich ausgelesen werden konnte, in rec_denied steht die Anzahl der Datensätze, die nicht ausgelesen werden konnte, z.B. mangels fehlenden Userrechten (wird z.Z. noch nicht unterstützt).
Das Array data enthält alle ausgelesenen Datensätze, die Index des Datensatzes stellt hierbei auch gleich die ID des Datensatzes dar.

int Errorcode flat_rec_update ( string Filename, Referenz Array Insertdata )

Mit flat_rec_update() lassen sich Änderungen in einzelnen Datensätzen speichern, dafür muss zuerst wieder einmal für Filename ein Pfad zu einem existierenden FlatFile angegeben werden.
Das Array Datensätze muss so aufgebaut sein, wie das Array, welches flat_rec_select() zurück gibt - in dem Array Datensätze muss also ein Unterarray unter [data] abgelegt sein und darin die einzelnen Datensätze als Array vorliegen. Der Index entspricht hier auch wieder der ID des Datensatzes, weshalb der Datensatz unter dem selben Index vorliegen muss, wie er auch in der Rückgabe von flat_rec_select() lag - andernfalls ist ein Updaten nicht möglich.
Das zu übergebende Array Datensätze könnte z.B. so aussehen:

Array
(
    [data] => Array
        (
            [1] => Array
                (
                    [name] => Dennis Riehle
                    [foo] => bar
                    [lastupdate] => 20050220195442.978677
                )
            [2] => Array
                (
                    [name] => Max Mustermann
                    [foo] => blabla
                    [lastupdate] => 20050220205682.148384
                )
        )
)

Damit das Update erfolgen kann, muss [lastupdate] angegeben sein. Dieser Spezial Timestamp soll Komplikationen im Multi-User Betrieb verhindern, s.a. Multi-User Fähigkeit.

Nach dem Funktionsaufruf könnte das Array z.B. so aussehen:

Array
(
    [data] => Array
        (
        )
    [meta] => Array
        (
            [rec_updated] => 2
            [rec_denied] => 0
        )
    [denied] => Array
        (
        )
)

In diesem Fall konnten beide Datensätze erfolgreich upgedatet werden, weshalb [denied] leer ist. Hätte ein Datensatz nicht erfolgreich upgedatet werden können, so wäre dieser jetzt in [denied] zu finden und meta[rec_denied] wäre um 1 höher.
Ein Grund für das Ablehnen eines Datensatzes kann einerseits ein fehlerhafter [lastupdate] Timestamp sein, oder der Datensatz existiert nicht bzw. nicht mehr im Flatfile.

int Errorcode flat_rec_delete ( string Filename, Referenz Array Insertdata )

Passend zu flat_rec_insert() wird flat_rec_delete() benötigt, um einen oder mehrere vorhandene Datensätze im Flatfile zu löschen.
Dazu wird ein indiziertes Array Datensätze übergeben, welches ein Array data enthalten muss. Jeder Schlüssel (Key) im Array data gilt als ID für einen zu löschenden Datensatz. Zusätzlich muss jedoch noch der Timestamp der letzen Änderung des Datensatzes mitgegeben werden. Den Last Modified Timestamp eines Datensatzes erhalten Sie beim Auslesen aus dem Flatfile mittels flat_rec_select(). Dieses Schema soll Komplikationen im Multi-User Betrieb verhindern, s.a. Multi-User Fähigkeit.
Das zu übergebende Array Datensätze könnte z.B. so aussehen:

Array
(
    [data] => Array
        (
            [1] => Array
                (
                    [lastupdate] => 20050220195442.978677
                )
            [2] => Array
                (
                    [lastupdate] => 20050220205682.148384
                )
        )
)

Nach dem Löschen sieht das Array ähnlich aus wie bei flat_rec_insert() oder auch flat_rec_update(), lediglich das die eine Arraystelle hier rec_deleted (statt rec_inserted bzw. rec_updated) heißt.