Sortierung von Einträgen nach eigener Reihenfolge

Sebastianus

Erfahrenes Mitglied
Hola! Bevor einer sagt, sowas gehört ins MySQL-Forum - ich bin dagegen :) - also bitte mal lesen!

Folgende Tabelle habe ich z.B.

ID - bildname - sortierungs_id

1 - baum.jpg - 3
2 - hund.jpg - 2
3 - katze.jpg - 1
4 - blume.jpg - 4

Ich kann jetzt also aus einer DB meine Reihenfolge auslesen, so dass erst katze.jpg ausgegeben wird, dann hund.jpg, dann baum.jpg uns schlussendlich blume.jpg. Über eine Admin-Oberfläche kann der Benutzer die Sortierung selbstständig ändern. So kann er z.B. katze.jpg um eines runtersetzen, so dass dann katze an Position 2 steht und hund.jpg an position 1. Derzeit würde ich wie folgt vorgehen:

Den Wert 2 suchen und auf 999 setzen, den Wert 1 suche und auf 2 setzen, den Wert 999 suchen und auf 1 setzen. Da ich ja schlecht in einem Update-Befehl die 1 auf 2 setzen lassen kann und dann die 2 auf 1, da es dann zwei Einträge mit 1 gibt. Ich hoffe es ist noch verständlich.

Wie also löst ihr so ein Problem der eigenen sortierung. Am liebsten wäre wmir natürlich, wenn der Wert 1 und 2 bei der sortierungs_id einfach tauschen würden, also die 1 zur 2 wird und die 2 zur 1 Nur wie geht sowas

Ich freue mich jedenfalls jetzt schon auf eure Lösungen, da ich shon häufig vor diesem Problem gestanden habe aber nie wirklich zufrieden warmi meiner lösung!
 
Wie du schon sagtest(wenn ich das richtig verstanden habe) mit Update.
Wieso soll es nicht mit Update gehen?
erst Updatest du die eine Zeile und dann die andere, dann gibt es zwar für den bruchteil einer Sekunde ne gleiche Nummer, aber das ist doch nicht schlimm, der andere Befehl wird doch gleich danach ausgeführt.

Hoffentlich hab ich dein Problem jetzt richtig verstanden ;)
 
Also ich würde eine solche Sortierung wie bei den Forensortierungen gängiger Boards (so wie diesem hier) einrichten.
Das bedeutet, man liest alle Einträge aus der Datenbank aus (in diesem Fall wohl Tierbilder o.Ä.) und generiert quasi für jedes Element eine Auswahlliste (Select) deren Name sich irgendwie aus der ID des Datensatzes zusammensetzt (z.B. sort_4 wobei die 4 die ID des Datensatzes wäre).
In diese Select-Felder kommen dann die Zahlen von 1 bis Anzahl der Datensätze und man kann bequem auswählen, an welcher Stelle die Elemente stehen sollen, also wie sie sortiert werden.
Beim Abschicken des Formulars trägt man in dem 'sortierungs_id'-Feld einfach die Zahl ein, die in der entsprechenden Checkbox ausgewählt wurde (natürlich per "UPDATE ...").

So viel von meiner Seite .... ;)
 
Zurück