Hilfe! Select kann nicht sortiert werden

SingleSocke

Grünschnabel
Hallo!

Ich habe ein größeres Problem! Ich soll ein Portal erstellen, bei dem die rechte Seite aus einzelnen Boxen besteht, die der User selbst wählen kann und nach Wunsch an bestimmter Stelle anzeigen lässt.
Ich habe also in meiner Usertabelle und eine Boxtabelle.
In der Usertabelle befinden sich die Userdaten, in der Boxtabelle befinden sich die Titel der einzelnen Boxen und ihre Ausrichtung (rechts oder links). Nun habe ich in meine Usertabelle 3 Spalten hinzugefügt (box1, box2, box3) in denen ich die ausgewählte ID der Box speichern will. Dies funktioniert soweit auch.

Nun möchte ich die Boxen auslesen. Dafür lese ich mithilfe des SQL-Befehls die ID's der Boxen aus:
Select box1, box2, box3 from user where login ='".$_SESSION['user']."'

Anschließend selektiere ich mittels diesen Befehls, die einzelnen Boxen:
SELECT * FROM boxes WHERE seite='rechts' and (id='".$box['box1']."' or id='".$box['box2']."' or id='".$box['box3']."')"

Auch dieser Select-Befehl funktioniert soweit. Allerdings - wenn der User eine Box in Box1 eine Box auswählt, die eine kleinere ID hat, wie die, die er in Box2 ausgewählt hat, dann wird trotzdem zuerst die Box2 angezeigt, da mein 2. SELECT nach der Box-ID sortiert und dieser so angezeigt wird. Gibt es eine Möglichkeit den 2. SELECT irgendwie nach den Boxen zu sortieren? Oder gibt es eventuell einen anderen SQL-Befehl, der die Spalten des ersten SELECT mit den Zeilen des zweiten SELECTS verknüpft?
 
Habe eine Lösung gefunden!

Man muss nur den zweiten Select nach einer bestimmten Reihenfolge sortieren und das geht sehr einfach:
SELECT * FROM boxes WHERE seite='rechts' and (id='".$box['box1']."' or id='".$box['box2']."' or id='".$box['box3']."') order by FIND_IN_SET(id,'".$rows['box1'].",".$rows['box2']."".$rows['3']."')"

Damit werden mir die Ergebnisse nicht nach der ID sortiert, sondern nach der Reihenfolge, die ich in FIND_IN_SET übergebe!

Jetzt geht's mir wieder besser! :p
 
Zurück