[PHP/Oracle] Manuelle Sortierfunktion

mbassus

Well-known member
ID: 104267
L
23 April 2006
5.071
449
Guten morgen,..

ich hab folgendes Problem:

Ich hab eine Hand voll Datensätze, im Beispiel nenn ich es mal Gästebucheinträge. Die Gästebucheinträge werden alle gemeinsam einmal aus ner Oracle DB ausgelesen, in ein Array gepackt und dann bereits sortiert ausgegeben. (Nach $array["sort_no"]..

So, nun will ich aber die Einträge mit Pfeilen nach oben und unten versehen, um sie manuell sortieren zu können. sort_no ist immer gleich ID des Eintrages, jede ID gibt es Datenbankweit nur einmal.

Hmm nur fällt mir kein Lösungsansatz ein wie ich das speichertechnisch machen könnte und dann aber auch nur die 2 Datensätze ändere, die ich ändern müsste..

Grüßle,
Martin.
 
Alleine mit der Sort_No wirst du nich weit kommen, wenn diese eindeutig bleiben solln. Nimmste ne einfach verkettete Liste und speicherst die halt noch.

Wenn der Datensatz seine ID ändern kann.... dann nimmst halt id und vertauscht sie halt mit der vorrigen oder der danach..... nur dann is meiner Meinung nach der Sinn und Zweck dieser eindeutigen ID weg....

also ich füg in meine Listen die so sotiert werden müssen immer ne SortID zu die halt nur für die datensätze gelten... damit kann ma schnell sotieren und das ändern der sortID's ist auch ganz einfach....
 
Zuletzt bearbeitet:
ne sort id kannst odch so anpassen das sie immer von 1-n geht... da musst halt beim löschen oder einfügen aufpassen aber ansonsten kein problem

Hmm ich erklärs anders...

Du hast nen Gästebuch Dienst..

Du hast 5000 User bei dir,.. jeder nutzt es täglich.

Und du hast nun fortlaufende Zahlen bei der Sort_id..

User a hat quasi sort_id 1..
dann wird irgendwas anderes gemacht.. und wieder was anderes gemacht..
User a bekommt den nächsten GB eintrag und hat dann sort id 28 für den zweiten eintrag.

So, jetzt will ich im Skript auf den 2 Beitrag klicken können, um die ID´s zu tauschen. Oder halt im 3. um die ID mit der 2. zu tauschen.

Das wichtige: Es müssen definitiv die Zahlen in der Datenbank getauscht werden, also 28 muss mit 1 getauscht werden, ich kann keine beliebigen zahlen einsetzen, da jede ID datenbankweit nur einmal exisitiert.
 
ZeroCCC hat dir doch die Lösung schon aufgezeigt. ;)

PHP:
SELECT
    ...
FROM
    foo
WHERE
    foo.sort_id > 'aktu_sort_id' and
    foo.usr_id = foo.usr_id
ORDER BY
    foo.sort_id
LIMIT
    1