Mailinglisten-Archive |
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