Ich arbeite an einem Projekt, bei dem die Benutzer die Elemente neu anordnen können, und zu einem späteren Zeitpunkt müssen diese Elemente in der gewählten Reihenfolge angezeigt werden. Nehmen wir als einfaches Beispiel eine Liste von Elementen:
A, B, C, D, E, F, G.
Die MySQL-Tabelle würde etwas Einfaches sein: user_id, letter, sortnumber
Der Benutzer kann die Reihenfolge schrittweise ändern. Er könnte A nach D, G an den Anfang usw. verschieben. Darüber hinaus kann er Elemente hinzufügen und entfernen. So kann er z. B. C löschen oder X hinzufügen. In jedem dieser Schritte sende ich Daten an PHP, das sie verarbeitet und die Elemente in MySQL einstellt.
Meiner Meinung nach gibt es zwei Möglichkeiten, dies zu tun:
-
Jedes Mal, wenn sie etwas hinzufügen/entfernen/umstellen etwas hinzufügen, senden Sie die gesamte Liste an PHP, löschen alle Daten, die sie Daten, die sie vorher dort hatten, und nur die neue Liste einfügen. Das Problem ist, das ist eine Menge Löschungen/Einfügungen jedes Mal, wenn sie etwas tun. Sie könnten A nach B verschieben, und plötzlich lösche ich 7 Datensätze und füge 7 weitere ein. Das Gute daran ist, dass es ganz einfach ist.
-
Bei jeder "Verschiebung" (z. B. Hinzufügen, Entfernen oder Nachbestellen) senden Sie die entsprechenden Informationen. Wenn z. B. An nach F verschoben wurde und mir gesagt wird: "Verschiebe An nach F", muss ich prüfen, ob sowohl A als auch F in der Liste vorhanden sind, dann muss ich alle "Sortiernummern" zwischen A und F (einschließlich F) abnehmen. Wenn sie "Z löschen" sagen, muss ich es in der Liste finden, löschen und alle Sortiernummern der nachfolgenden Datensätze dekrementieren.
Also bin ich einfach neugierig... Hatte jemand mit etwas zu tun, bei dem Ordnung wichtig ist, und wenn ja, wie sind Sie dabei vorgegangen?