4 Stimmen

MySQL-basierte Webanwendung: Wie können die Benutzer am einfachsten eine Bestellung oder Artikel auswählen?

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:

  1. 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.

  2. 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?

0voto

Bingy Punkte 633

Fügen Sie einfach eine weitere Spalte hinzu. Nennen Sie sie order .

Sie haben die Reihenfolge der Zeilen und jede Zeile hat eine ID oder einen Primärschlüssel. Gehen Sie einfach eine Zeile nach der anderen durch und legen Sie die Reihenfolge nach und nach fest. So:

UPDATE item_table SET order = 0 WHERE id="fred";
UPDATE item_table SET order = 1 WHERE id="larry";
UPDATE item_table SET order = 2 WHERE id="john";
UPDATE item_table SET order = 3 WHERE id="sydney";

Ich bin sicher, es gibt Tricks, um dies mathematisch zu tun, aber manchmal sind die einfachen Antworten die besten.

Wenn Sie dann eine Abfrage machen, fügen Sie SORT BY order .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X