Just nu i M3-nätverket
Gå till innehåll

Omplacering av ordningen på ett sql inlägg


cedd

Rekommendera Poster

Jag skulle vilja kunna ändra ordning på poster i sql. Alltså om jag har gjort några inlägg till sql tex 1,2,4,5 som i sin tur har fått id nummer 1,2,3,4. Och nästa gång jag laddar upp tex 3 då som får id nummer 5 skulle jag vilja kunna placera eller på något sätt göra så att den får placeringen mellan 2 och 4. Så som man kan göra när man laddar upp bilderna på minhembio. Har fundera på hur jag ska kunna fixa det här och behöver lite hjälp på traven.

Länk till kommentar
Dela på andra webbplatser

Du behöver inte göra någonting, det är bara att sortera på det fältet (inte id-fältet, det andra) när du hämtar ut datan.

Länk till kommentar
Dela på andra webbplatser

Du behöver inte göra någonting, det är bara att sortera på det fältet (inte id-fältet, det andra) när du hämtar ut datan.

 

Verkar som du missuppfattar mig. Jag kommer aldrig kunna sortera efter de andra fältet. Efter som siffrorna bara var ett exempel för att visa lättar att förstå. Så de kommer aldrig att finnas någon logiskt ordning att sortera efter. Men däremot kan jag tänka mig att jag behöver ett fält som heter typ id_ordning som jag få sortera efter. men då är frågan hur jag lyckas uppdatera de fältet? för om jag har tre poster med id_ordning 1,2 och 3. Sen ladda upp en ny post och vill placera den mellen 1 å 2 då måste jag först ge den det nya ordnings id 2 och även på något sätt uppdatera dem andra till 3 och 4.

Länk till kommentar
Dela på andra webbplatser

Ok, då förstår jag vad du är ute efter. Det där är en operation jag fått utföra i ett antal projekt. I vissa fall har jag löst det helt på databassidan och i andra på klientsidan i samband med inlägget. Oavsett vilket så är det en tvåstegs-operation du behöver göra (och du behöver ett sorteringsfält i tabellen som anger ordningen)

 

För att placera in posten på plats nr X

 

1. Öka ordningsnr för alla poster med värde X och högre

UPDATE tbl SET order_no=order_no+1 WHERE order_no>=X

2. Lägg in posten med order_no=X

 

Svårare än så är det inte vid inlägg.

 

Vid radering kommer du också behöva göra en tvåtaktare

 

1. Radera post med order_no=X

2. Minska ordningsnr för alla poster med order_id större än X

UPDATE tbl SET order_no=order_no-1 WHERE order_no>X

 

(För att flytta poster ordningsvis så får du utföra en swap mellan två poster, vilket är en trestegare)

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...