MySQL Werte vertauschen

Hi ich bin hier echt bald am Verzweifeln.

Hab mal spaßeshalber n simples Newssystem geschrieben, ich habe in der tabelle eine Spalte ‘id’, eine für das Datum, eine für die Beschreibung und eine zum Sortieren der Einträge namens ‘sortid’.

Und hier liegt das Problem. Ich möchte die Funktion haben, die ‘sortid’ eines Eintrags entweder um 1 zu erhöhen oder um 1 zu verkleinern, sodass ich die Einträge beliebig sortieren kann.

Also soll sich der ‘sortid’ - Eintrag um eines erhöhen, bzw. verringern während der nächst kleinere bzw. größere sich auch um jeweils 1 verrringert bzw. erhöht. Die Werte sollen einfach wechseln.

Wie bekomm ich das über eine PHP Abfrage in meine Datenbank?

Ich hoffe es ist klar was ich meine :wink:

Nein, ich weiss nicht genau was du meinst :wink:

also der erste wert soll erhöht werden?
dann soll der nächste, der grösser ist verkleinert werden?
der der kleiner ist, soll vergrössert werden? oder wie?

mfg Joey

erhöhen mit UPDATE:
sortid=sortid+1
und evt noch eine WHERE klausel, damit es nur auf bestimmte sortid’s angewendet wird.
verringern dann natürlich mit minus statt plus.

Edit:
Ich würde das ganze evt. so lösen:
Du möchtest den Eintrag mit der ID 15 an Position 5 bringen.
Dann machst du in etwa wie folgt:

Auf diese Art werden alle Einträge, die den Wert 5 und höher als sortid haben, um eins addiert, und die sortid 5 ist somit definitiv frei. und der Eintrag mit der ID 15 kann die sortid 5 erhalten.
Ist natürlich nicht optimal, da dann mit der Zeit Lücken entstehen. Genau Gedanken hab ich mir um eine Möglichkeit irgendwas speziell zu sortieren nie wirklich gemacht.
Und eine Sicherheit, dass der mit der sortid 5 auch an fünfter Position ist, gibt es nicht, wenn es von denen darunter nur 1, 2 und 4 gibt (als Beispiel).

Es geht bloß darum, den Wert entweder um 1 zu verringern oder zu erhöhen.
Das soll dazu dienen, die Newseinträge zu sortieren…

So wie hier gezeigt: (Pfeile für nach oben und unten, der Rechtschreibfehler is nich von mir^^)

z.b.

z.b.

Das sollte auch in einer Abfrage gehen:

Allerdings ungetestet :wink:

Danke für die Antworten!

Ich habs inzwischen so gelöst, dass ich den wert erstmal auf 0 setze, dann den nächsthöheren um 1 verringere, und dann den Wert 0 wieder erhöhe. Klappt wunderbar, kann also geschlossen werden^^