Ich habe eine Website, wo Menschen Beiträge erstellen und senden können (wie auf Stackoverflow und Facebook).Wie können Sie mehrere Beiträge gleichzeitig bearbeiten, ohne sie zu überschreiben?
Eine Sache, die der Benutzer tun kann, ist ein Foto anzuhängen, bevor er die Post abschickt. Sobald das Foto angehängt ist (unter Verwendung von AJAX), wird ein neues PostID
in der Back-End-Datenbanktabelle für den Post erstellt, der bearbeitet und im Bereich SESSION
des Benutzers gespeichert wird, z. SESSION.LoggedIn.PostID = rsInsertedPost.PostID
.
Die gleichen Dinge passieren, auch wenn ein Foto nicht angeschlossen ist, außer dass es die PostID
auf die endgültige Einreichung der Post stattdessen erstellen wird.
Der Grund, warum ich es in der SESSION-Bereich speichern, ist, weil die PostID
, die gerade erstellt wurde, in mehreren anderen Bereichen in der Back-End-Anwendung (CFC-Komponente in meinem Fall) verwendet wird. Zum Beispiel wird es Tags einfügen, die der Benutzer mit seinem Posten in einer separaten Tabelle zugeordnet dbo.PostTags
wie solche:
PostID | Tag
44 ColdFusion
44 Programming
44 SQL
Nachdem die Verarbeitung der Formularübertragung beendet hat, wird es die PostID
aus der Sitzung des Benutzers entfernen.
Das Problem, auf das ich stoßen werde, ist, wenn ein Benutzer mehrere Browserfenster öffnet und beschließt, gleichzeitig mit mehreren Posts zu arbeiten. Der PostID-Wert der SESSION wird weiterhin von der neu erstellten überschrieben, was bedeutet, dass wenn sie sich dazu entschließen würden, zu einem anderen Browser-Tab zurückzukehren und ihren Post zu senden, würde dies den zuletzt erstellten Post betreffen.
Was wäre ein guter Weg, um dieses Problem zu überwinden, eine Spur von PostIDs zu behalten, an denen die Leute gerade pro Fenster arbeiten. Gibt es ein anderes eindeutiges Attribut, das ich zusammen mit der PostID in der SESSION speichern könnte, so dass nur dieses pro geöffnetem Browserfenster betroffen ist?
Dies ist wahrscheinlich das Argument Nummer eins gegen das Speichern von Informationen im Sitzungsumfang. Der Weg, um damit fertig zu werden, besteht darin, die postId in ein verstecktes Formularfeld oder etwas Ähnliches zu bringen und es zu verarbeiten, wenn Sie das Formular absenden. –
@DanBracuk Gibt es keine andere Alternative? Ich habe versucht, in einigen Büchern nachzuschlagen, aber ich bin mir nicht sicher, unter welchem 'Thema' das kommen würde. Können Sie mir einige Themen vorschlagen, die mit dieser Art von Szenario zu tun haben könnten? –
Was ist los mit dem Speichern der ID in einem versteckten Feld? – Leigh