phpbar.de logo

Mailinglisten-Archive

[php] MySQL: Datensatz nach oben und unten verschieben

[php] MySQL: Datensatz nach oben und unten verschieben

Simon Bienlein s.bienlein at gmx.de
Die Jun 12 11:06:11 CEST 2007


Hallo Sebastian,

auch dir vielen Dank für deine Antwort.

Sebastian Mendel wrote:
> wenn immer nur ein Eintrag verschoben wird:
>
> // +, noch 'oben'
> UPDATE `table`
> SET `prio` = `prio` - 1
> WHERE `prio` BETWEEN $prio_old AND $prio_new;
> // oder
> // -, nach unten
> UPDATE `table`
> SET `prio` = `prio` + 1
> WHERE `prio` BETWEEN $prio_old AND $prio_new;
>
> // und natürlich
> UPDATE `table`
> SET `prio` = $prio_new
> WHERE `id` = $id_of_moved_object;

Deine Lösung hört sich ja total einfach an. Im Grunde geht es ja auch
nur um das Verschieben der Sortierspalte nach oben oder unten.

Beim Testen hatten die Spalten id und prio identische Werte (1, 2, 3).
Ich wollte den dritten Datensatz nach oben verschieben:

UPDATE test SET prio = prio -1 WHERE  prio BETWEEN 3 AND 2;
UPDATE test SET PRIO = PRIO -1 WHERE id = 3;

Danach sah es so aus:
mysql> select id,prio from test order by prio;
+----+------+
| id | prio |
+----+------+
|  1 |    1 |
|  2 |    2 |
|  3 |    2 |
+----+------+

Die id 2 bräuchte den Wert 3. Aber wie das mit 2 Anweisungen erschlagen
...?

Vielen Dank im Voraus für weitere Hilfe. Gehe jetzt den anderen
Lösungshinweisen nach.

VG Simon



php::bar PHP Wiki   -   Listenarchive