Hallo!
Bin ebenfalls gerade mit der gleichen Problematik beschäftigt und beim Recherchieren auf diesen Thread gestoßen
Zitat:
|
Zitat von 321
Wenn Du in den Datensätzen einen Timestamp der letzten Änderung hast, kannst Du diesen nach Einlesen speichern.
Kommt er nun zum Absenden und Verarbeiten der Eingabe, prüfst Du durch erneutes Einlesen, ob der Timestamp noch gleich.
Wenn ja: alles ist ok, verarbeite die Eingabe!
Wenn nein: Fehler-Meldung dass die Daten zwischenzeitlich geändert wurden und die neuen Daten als Vorgabe ins Formular stellen. So muss der zweite Nutzer nicht unnötig lange warten.
|
Ich halte diese Variante auch für gängig und weit verbreitet. Dennoch ist mir eine andere Idee gekommen, die ich hier einfach mal zur Diskussion stellen möchte:
Es wurde bereits das Problem beschrieben, dass der Nutzer in vielen Fällen wohl das Formular "unkontrolliert" (d.h. also, dass er NICHT über 'Speichern' oder 'Abbrechen' ...wie auch immer die Buttons heißen) verlassen könnte. Um diese Situationen abzufangen, verwende ich eine Art Filter, der bei jedem Request durchläuft.
Was tut der Filter?
Wenn ein Nutzer einen Datensatz per Edit-Formular bearbeitet, wird schon beim Betreten des Formulars eine Session-Variable mit der ID des Datensatzes und gleichzeitig ein Flag in der Datenbank gesetzt, um den Datensatz als "in Benutzung" zu kennzeichnen.
Der Filter prüft nun bei jedem Request das Vorhandensein der Session-Variable. Ist sie gesetzt, wird IN JEDEM FALL der Datensatz per Flag in der DB wieder freigegeben (es ist sehr wahrscheinlich, dass diese Aktion folgerichtig ist, da der Nutzer das Formular entweder speichert, abbricht oder unkontrolliert verlässt; der andere Fall würde nur eintreten, wenn der Nutzer im Browser "Aktualisieren" drückt).
Ist die Session-Variable nicht vorhanden, passiert rein gar nichts. Somit dürfte diese Lösung auch vergleichsweise schnell sein.
Den Vorteil gegenüber der bereits geposteten Lösung sehe ich darin, dass Datensätze von vornherein als "In Bearbeitung" gekennzeichnet werden können. Das macht bei größeren Formularen mit umfangreichen Eingaben durchaus Sinn: denn wenn der Nutzer mühevoll seine Eingaben gemacht hat und dann mit einer Meldung á la "Eintrag wurde modifiziert" beglückt wird (samt aktualisierter Form-Felder), wird seine Laune sicher nicht besser davon
Soweit die vereinfachte Erklärung dieses Konzepts, was sicherlich an einigen Stellen verfeinert werden kann.
Mich würde eure Meinung dazu interessieren. Seht ihr gravierende Schwachstellen?
Vielen Dank fürs Lesen
JoSsiF
