phpbar.de logo

Mailinglisten-Archive

[php] MySQL: Datensatz nach oben und unten verschieben

[php] MySQL: Datensatz nach oben und unten verschieben

Sebastian Mendel lists at sebastianmendel.de
Die Jun 12 12:37:15 CEST 2007


Simon Bienlein schrieb:
> 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:

oben? von pos 3 auf 2?

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

dann müssen die anderen nach 'unten' rücken, nicht nach 'oben'
also 2 auf 3 usw.

UPDATE test SET prio = prio +1 WHERE  prio BETWEEN 3 AND 2;

> UPDATE test SET PRIO = PRIO -1 WHERE id = 3;

oder eben

UPDATE test SET PRIO = 2 WHERE id = 3;


-- 
Sebastian Mendel

www.sebastianmendel.de

php::bar PHP Wiki   -   Listenarchive