Vad är det bästa sättet att få ett obestämt antal poster att hämtas i exakt vald ordning?
Sätter man ett fält där det fylls i en siffra och högst eller lägst hamnar först/sist?
Hur gör man i så fall om posten med ordningsnumret 78000 plötsligt ska vara post nr. 3? Ska alla däremellan få nya nummer då?
UPPDATERA post 78000 SÄTT 3
UPPDATERA post (> 2 AND < 78000) SÄTT +1
? ;)
Jag tror att jag vet hur man gör det, men det känns inte som en bra lösning.
Ska det blandas in en relationstabell på nåt vänster? Det blir ju lite samma sak där känns det som. Frågan är när man ska ha 78000 poster med bestämd ordning, men bara att uppdatera 50 poster för att en enda byter plats verkar omständligt.
Jag använder för övrigt php och mysql, men tänkesättet är väl detsamma oavsett.
Det bästa sättet är att sortera på ett fält som gör att ordningen blir som man vill ;) Vill man ha något i datumordning, ja då sorterar man på datumet. Frågan är hur din tabell ser ut och vad det är i den som bestämmer i vilken ordning raderna skall sorteras? Kan du ge något exempel?
Det bästa sättet är att sortera på ett fält som gör att ordningen blir som man vill ;) Vill man ha något i datumordning, ja då sorterar man på datumet. Frågan är hur din tabell ser ut och vad det är i den som bestämmer i vilken ordning raderna skall sorteras? Kan du ge något exempel?
Hehe, jag har faktiskt inget bra exempel. Men i ett system där man kan hantera kategorier och underkategorier så kanske man vill ha dem i en bestämd ordning där det kan expandera och ändras om lite hur man vill med ordningen. Det rör sig ju iofs inte om något enormt antal poster i det exemplet, men det får duga.
Är det som jag beskrev i förra inlägget som man ska göra?
Ja, det låter rimligt. Om posten 78000 plötsligt ges 3, så bör ju den tidigare med nummer 3 få ett annat nummer.
Hur anger du vilken ordning kategorierna skall hamna? Har du en meny där du drar och släpper dem på korrekt plats, eller kanske en listbox där du med pilar kan flytta poster upp och ned? I sådana fall sparar du väl om listan när ändringarna gjorts, d.v.s. tömmer tabellen och sparar om listan?
Men jag bör ha en relationstabell med ordningen som hela tiden töms och sparas om?
Låt säga att jag nu hade 78000 poster. Om det ska tömmas och sparas om hela tiden, är inte det ganska krävande? Vad händer om tömningen görs och sedan avbryts det nya mitt i? Sånt kan väl inträffa?
Om det sker "hela tiden" blir det tungt för vilken server som helst ;)
Skulle ett fel inträffa mitt i tömningen återkallas alla ändringar beroende på om autocommit är påslaget eller inte. Autocommit finns inte i MyISAM, så det är viktigt vilken lagringsmotor som används. (Lite om autocommit: http://dev.mysql.com/doc/refman/5.0/en/innodb-and-autocommit.html.)
Du skulle kunna ha en tabell som refererar huvudtabellen. Den tabellen kan ha två fält: post-id och ordning.