x-herbert: Historie der Formulareingaben speichern

Hi,

ich suche anch einer "eleganteren" Lösung, um den Verlauf von Formulareingaben zu speichern.

Datenbank: MySQL (dürfte aber egal sein)

Formular: es gibt ein Formular, un dem man Stammdaten eines Projektes anlegen, ändern und dieses löschen kann. Es gibt also ein INSERT, diverse UPDATE sowie ein finales UPDATE, da "Löschen" nur ein Flag setzt.

Ziel: es soll für ein Projekt nachvollziehbar sein, wann eine Änderung stattgefunden hat und man muss die Änderung rausfinden können - es muss also eine Historie darstellbar sein.

Soweit - so gut...

Ich habe das bisher so gelöst, dass bei jedem Update nicht der vorhandene Datensatz verändert wird, sondern immer ein neuer angelegt wird. Über die ID (auto_increment) bzw. einen Zeitstempel kann ich für ein Projekt alle Einträge in zeitlicher Reihenfolge ausgeben.

Nun wird der Datensatz eines Projektes mit zwei verschiedenen Formularen bearbeitet, so dass ich alle Werte, die zum anderen Formular gehören, vom vorhandenen zum neuen Datensatz "retten muss"...

Frage: gibt es für dieses Szenario ein "Framework" der Umsetzung??
Die bisherige Implementierung läuft zwar, ich würde die Sache aber gern mit geringeren "Fehlermöglichkeiten" haben

Mit Dank und Gruss

x-herbert

  1. Nun wird der Datensatz eines Projektes mit zwei verschiedenen Formularen bearbeitet, so dass ich alle Werte, die zum anderen Formular gehören, vom vorhandenen zum neuen Datensatz "retten muss"...

    Ich verstehe den Vorgang nicht ganz. Gibt es Formular spezifische Werte?

    Ich habe es so verstanden:
    Es gibt eine Tabelle in der die Projektdaten gespeichert sind.
    Bei jeder Änderung der Projektdaten über das Formular wird ein neuer Datensatz hinzugefügt. So kann man den Verlauf der Daten betrachten.
    Das Problem das ich hierbei sehe ist, dass man sich in der Aktualisierung der Datensätze mit den zwei Forularen überschneidet und so Aktualisierungen verloren gehen. Dazu müsste man die Aktualisierung für das zweite Formular sperren wenn das erste verwendet wird.
    Das scheint aber nicht dein Problem zu sein.

    1. Moin,

      Das scheint aber nicht dein Problem zu sein.

      korrekt -> ist nicht das Problem...

      sondern im Formular A werden die Werte Wert A, Wert B gesetzt in Form B die Werte Wert C und D - immer vorhanden ist z.B. Projektnummer

      Beim jweiligen Insert muss ich die "fehlenden Werte", die also nicht im jeweiligen Form gesetzt werden aus dem vorhergehenden Datensatz mit übernehmen also wenn ich den Insert in Form A mache, muss ich Wert C und D aus dem vorhergehenden Datensatz "rüberretten".

      Möglichkeiten:
      * Werte als Hidden-Fields
      * Session-Variablen
      (* Subselect auf vorhergehenden Datensatz dürfte nicht gehen, da gleiche Tabelle)

      Gruss x-herbert

  2. Hallo

    Ich habe das bisher so gelöst, dass bei jedem Update nicht der vorhandene Datensatz verändert wird, sondern immer ein neuer angelegt wird. Über die ID (auto_increment) bzw. einen Zeitstempel kann ich für ein Projekt alle Einträge in zeitlicher Reihenfolge ausgeben.

    das halte ich für keine gute Idee.
    Verwende statt dessen eine eigene Tabelle, in der Du die Historie unterbringst.
    Bei MySQL 5.0 und neuer könntest Du Trigger für diese Aufgabe nutzen.

    Frage: gibt es für dieses Szenario ein "Framework" der Umsetzung??

    Mir ist keines bekannt. Aus meiner Erfahrung mit einem solchen System weiß ich, dass die Verwaltung einer Historie durchaus aufwendig werden kann und einzelne Operationen _sehr_ langsam machen kann.

    Freundliche Grüße

    Vinzenz