cipher Skrevet 7. april 2004 Del Skrevet 7. april 2004 (endret) 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 7. april 2004 av cipher Lenke til kommentar
BlueEAGLE Skrevet 8. april 2004 Del Skrevet 8. april 2004 Lag et felt til som viser rangeringen. Men blir det mye innhold så er det nok få som gidder å bry seg med å sortere dette. Lenke til kommentar
cipher Skrevet 8. april 2004 Forfatter Del Skrevet 8. april 2004 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
P.K. Skrevet 9. april 2004 Del Skrevet 9. april 2004 (endret) 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 9. april 2004 av P.K. Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå