02. februar 2003 - 07:04Der er
12 kommentarer og 2 løsninger
skift felt-rækkefølge i mysql
Jeg har lavet en side hvor man kan uploade/slette links til/på siden. Men en vigtig ting, jeg endnu ikke har ku hitt ud af er: hvordan kan brugeren ændre rækkefølgen af felter? Felterne har lige nu id med autoincrement, og jeg bruger "order by id". Hvordan gør jeg så brugeren f.eks kan flytte link nr 5 op øverst.. eller indsætte nyt link som nr. 3 i rækken (istedet for nederst).
I et inbound callcenter, hvor identiteten på den, der ringer ind, skal bekræftes, kan kontrollen nu foregå i telefonkøen. Det understøtter fem centrale KPI'er for callcentre.
Du kan lave et felt (evt. 'orderid'?), som du sorterer fra (order by orderid asc), og så kan du lave noget med at man kan ændre i rækkefølgen på den måde...?
Du skal ikke bruge id-feltet til det. Opret et nyt felt og sæt det i udgangspunktet til samme værdi som id'et. Brug det nye felt til at sortere efter, når du viser elementerne på skærmen. Herefter kan du ændre værdien i det nye felt, hvis du vil ændre rækkefølgen.
ok. jeg bruger php til at styre det... hvis jeg f.eks laver et felt (link-id) ud for hver link der er oprettet, hvori der kan angives rækkefølge 1-xxxx (og så "order by link-id" på siden der viser links'ne). så ville det virke uden tvivl. men hva med skips, hvor brugeren har slettet links? så tælles der måske 1,2,3,11,78. lidt grimt og forvirrende for brugeren. jeg aner ik hvordan jeg ellers ku gøre det muligt at redigere og slette i rækkefølgen af felter. måske er jeg i den forkerte kategori..
Jeg ville lavde det så at "sorterimgsID" ikke blev vist, men blev opdateret når brugeren gjorde noget - det er vist re almindeligt med en "moveup" og "movedown" knap som flytter current op eller ned i rækkefølgen.
Men det er et applikations-problem - i dit tilfælde et PHP problem.
Database mæssigt skal du bare have feltet og sortere efter det.
Bemærk du er nødt til at gemme ihvertfald ID i et array.
Når man så klikker MOVEUP i den n'te række, så laver du:
sortid1 = SELECT SORTID FROM T WHERE ID=id[n-1] sortid2 = SELECT SORTID FROM T WHERE ID=id[n] UPDATE T SET SORTID=sortid2 WHERE ID=id[n] UPDATE T SET SORTID=sortid1 WHERE ID=id[n-1]
og laver en refresh.
Bemærk at du skal sikre dig at 2 brugere ikke kan opdatere de samme rækker samtidigt !
Hvis man f.eks. gør det på 3. række, så vil man få:
Hej ohmish - jeg har arbejdet ud fra dit svar men har problemer. Jeg har problemer med [t-1]. Som jeg læser det fanger du det forrige t i array'et, men når jeg gør det skrives intet. Hvis jeg istedet bruger (t-1) får jeg ikke den forrige værdi men værdien t-1 - som jo ikke nødvendigves er det samme som forrige t i arrayet.
Kan du hjælpe mig med at fange det forrige t?
Set rs = Conn.Execute("Select menuorder from test ORDER By menuorder ") arrData = rs.GetRows() Set rs = nothing
If request("flyt") = "venstre" Then NowMenu = request("NowMenu") NowMenu = int(NowMenu) For t = LBound(arrData,2) to UBound(arrData,2) If t = NowMenu Then response.write [t-1]
End If Next End If %> //Lars
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.