24. april 2003 - 10:25Der er
12 kommentarer og 1 løsning
Sortering af databseposter efter overskrift.
Jeg har en side med et udtræk fra en MySQL database. Udtrækket består af fire kolonner (grad, navn, funktion, status). Jeg ønsker, at brugeren skal kunne sortere udtrækkene efter en af disse, ved at klikke på kolonneoverskriften. Funktionaliteten er bl.a. set på disse sider fx i oversigten over hvilke spørgsmål man har oprettet.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Du kan lave det ved den bare toggler DESC elle ASC. Eks:
<% order = Request.querystring("order") if lcase(order) = "desc" OR order = "" then order = "ASC" nyorder = "DESC" else order = "DESC" nyorder = "ASC" end if kolonne = Request.querystring("kol") if kolonne = "" then kolonne = "grad"
SQL = "SELECT * FROM xxxx ORDER BY " & kolonne & " " & order & ";"
'Udksirv linksne det skal så ind i en fin tabel her bare som eks:
Det er principielt farligt at lægge dele af sqlsætningen ud i links som
"<a href=""?kol=grad&order=" & nyorder & """>
da det giver uanede muligheder for at lave SQL-injection, og kigge på og ødelægge din database. Når du har fået det til at virke, så skal du til at kigge på sikkerheden inden du lægger det ud til andre.
Ja det så relativt let at lave en if sætning som tjekker på om stregnen som ligger i sin SQL er gyldig.
'Tjekker om kolonne indeholder gyldig kolonnenavn eller vælg kolonnen grad. if NOT (kolonne = "grad" OR kolonne= "navn" OR kolonne ="funktion" OR kolonne ="status") then kolonne = "grad"
So far so good. Jeg er villig til at give point for indsatsen indtil videre, men hvis du/I har tid/overskud til at hjælpe mig til at få rettet det ind, så den starter med ASC hver gang man trykker på en ny kolonne, og bruger DESC hvis man trykker på den igen, så vil det være nice.
Ja det kan laves man skal så holde styr på hvilken kolonne man viser og så kommer der bare en if sætning som afgøre retning på linket det er hurtigt lavet to sekunder..
Omkring det med kolonnerne kan du lave disse to om så du ikke overføre kolonnenavne med et tal for kolonnen:
kolonne = Request.querystring("kol") if kolonne = "" then kolonne = "grad"
Til dette.
kolonne = Request.querystring("kol") select case Cstr(""&kolonne) case "1" strkolonne = "grad" case "2" strkolonne = "navn" case "3" strkolonne = "funktion" case "4" strkolonne = "status" case else strKolonne = "grad" end select
Det første med order skal beholdes og hvis du laver på den måde med select case skal linkne laves sådan her, så et link skal laves over 5 linjer:
Repsonse.write "<a href=""?kol=1&order=" if strkolonne = "grad" then Repsonse.write nyorder else Repsonse.write "ASC" end if Repsonse.write """>Grad</a>"
Jeg takker ærbødigst. Du har til fulde fortjent pointene.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.