Toon posts:

[MySQL] prioriteit bepalen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een lijst met projecten in een database tabel staan. Nu laadt php die lijst in en geeft de projecten weer in de volgorde zoals het uit de database komt (select * from projecten). Maar nu wil ik kunnen bepalen welk project op welk moment ingeladen wordt, dus niet op basis van alphabet of datum, maar op basis van een prioriteit(volgorde nummer) die ik aan het project geef. Dus het lijkt me logisch om bijvoorbeeld de rij "prioriteit" of "volgorde nummer" aan de project tabel toe te voegen.

Nu mijn probleem, stel deze tabel voor:

naam prioriteit
project1 1
project2 2
project3 3
project4 4
project5 5

Maar ik verander de volgorde in:
naam prioriteit
project1 2
project2 5
project3 4
project4 1
project5 3

Wat is de beste manier op dit dmv mysql aan te passen? Stel ik heb 200 projecten. Het project met prioriteit nummer 1 moet prioriteit nummer 200 krijgen en de rest moet 1 stap naar boven opschuiven. Dan zou ik dus elke rij in de database moeten aanpassen om de volgorde te veranderen. Dit lijkt me een beetje overdreven, dus is er een betere manier om de volgorde te bepalen en aan te passen?

Ik zou bijvoorbeeld stappen van 10 of zelfs 100 kunnen maken tussen prioriteit nummers, maar sooner or later kom je dan toch in de problemen wanneer ze bij elkaar in de buurt komen. Ik wil niet elke week een script hoeven laten draaien die de sorteringsnummers aanpast. Het moet gewoon automatisch goed gaan zonder er meer naar om hoeven te kijken.

Weet iemand een goede oplossing?

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 21:58
Hele scripts schrijven voor het updaten is natuurlijk niet nodig. Je kunt dit met mysql-updates wel oplossen. Om project met prioriteit 1 naar plaats 50 te krijgen doe je (pseudo):

UPDATE tabel SET prio-- WHERE prio <= 50
UPDATE tabel SET prio = 50 WHERE projectid = foo

Daar is weinig ingewikkelds aan, en aangezien je waarschijnlijk niet honderden keren per dag de prioriteit aan gaat passen zie ik niet helemaal in waarom je hier iets performanters voor zou gaan verzinnen :)

[ Voor 3% gewijzigd door T-MOB op 21-10-2005 11:30 ]

Regeren is vooruitschuiven