Gå til innhold

sortering av data fra database


Anbefalte innlegg

jeg har en tabell med mye data. Eksempel (hver post kan inneholde int med autoincrement (id) + hva som helst av andre felter jeg har laget):

 

post1

post2

post3

post4

post5

 

La oss si at dette skal vises på en webside

 

SELECT * FROM tabell

 

da ville jeg fått en output som tilsvarer eksemplet ovenfor.

 

Det som er problemet er at jeg ønsker et adminpanel som skal kunne sortere disse postene som man vil. F.eks. skal man ved å kunne trykke en knapp flytte en valgfri rad OPP eller NED på sorteringslisten.

 

post1 (flytt opp | flytt ned)

post2 (flytt opp | flytt ned)

post3 (flytt opp | flytt ned)

post4 (flytt opp | flytt ned)

post5 (flytt opp | flytt ned)

 

Resultatet vil være at jeg kan få en output sortert etter noe som er totalt uavhengig av noen av feltene jeg faktisk skal bruke. Dvs ikke alfabetisk, etter dato, eller liknende. Brukeren skal altså selv kunne bestemme hva som skal være først og sist.

 

Noen som vet om en genial løsning for å få til noe slik?

 

 

En annen problemstilling er dette med default post. La oss si at vi i en tabell har 5 poster hvorav vi ønsker å kunne markere en som default. Måten jeg har løst dette på hittil er å lage en enum med true & false som markerer som den er default til true. Ulempen med denne løsningen er at man:

 

1) må velge false for alle det ikke gjelder (dvs alle "vanlige" poster).

2) muligheten for å markere flere som "default" rad.

 

Med default mener jeg i dette tilfellet posten som skal vises hvis ingen annen er definert (dvs hvor WHERE id='etellerannet' feiler) eller bruker ikke har angitt noen spesiell post å hente ut.

 

Noen genier der ute som vet om en bedre løsning på dette?

Endret av cipher
Lenke til kommentar
Videoannonse
Annonse

du mener en int hvor høyeste/laveste tall blir vist først/sist? vil ikke dette være et helvete å administrere? dvs hvis 5 felt har samme id, også trykker man 1 ned og der har jammenmeg 4 felt samme id fra før...

Lenke til kommentar

Lag et felt i tabellen som f.eks. heter `position`. Her lagrer du tall som henviser til hvor i rekkefølgen de enkelte radene ligger. SQL commandoen for sortering i stigende rekkefølge blir da:

SELECT * FROM `tabell` ORDER BY `position`

 

Funksjonene til flytt opp og flytt ned legger til eller trekker ifra verdien 1 fra den nåværende `position`-verdien til raden. Hvis to rader har samme verdi i `position` vil den sortere de som har samme etter andre kriterier, eller ettersom de kommer. Dette kan du fikse til. Hvis det er ønskelig at ingen kan ha lik verdi i `position`, kan du gjøre slik at når man flytter opp eller ned, kjører scriptet en UPDATE SQL kommando også for den raden som har -1 eller +1 i forhold til `position` på den raden som skal flyttes. UPDATE SQL kommandoen kan da øke/minske `position`-verdien til raden under/over :)

Endret av P.K.
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...