Avatar billede simonwh Nybegynder
30. juli 2005 - 01:25 Der er 6 kommentarer og
3 løsninger

Nemmeste måde at skifte rækkefølge?

Hey. Er ny her og skriver kun fordi vores php-prorgammør er på ferie.

Vi har lavet et system hvor man kan tilføje produkter og de får så tildelt et id også. Website'et viser produkterne efter id, altså først id 1, 2, 3 osv.

Nu vil klient godt kunne flytte produkterne rundt. Så han f.eks. kan flytte produktet fra plads 20 (id 20) til plads 3 (id 3). Problemet er så at vi jo ikke bare kan lave id'et om, for så er der jo to produkter med samme id?

Hvad er den nemmeste måde at gøre dette på?
Avatar billede coderdk Praktikant
30. juli 2005 - 01:33 #1
Indtil jeres programmør kommer hjem, tror jeg det er nemmest at ændre det direkte i databasen. F.eks. med phpMyAdmin eller lignende (MySQL Front eller hvad I bruger).
Tag den første og ændr ID'en til noget højt som ikke findes i forvejen, tag den anden og giv den den førstes oprindelige ID, ændr den første til den andens gamle ID ;)
Avatar billede simonwh Nybegynder
30. juli 2005 - 01:37 #2
Tak for svaret. Jeg kan godt se hvad du mener. Men problemet er jo så, at den første så kommer til at ligge et andet sted end før.

Er der en måde hvor på man kan rykke alle id's efter og med f.eks. 4 hvis man sætter et produkt ind som 4? Altså så den oprindelige 4 bliver 5, og 5 bliver 6 osv.

Koder og muligheder er velkomne. Mange tak!
Avatar billede mysli Nybegynder
30. juli 2005 - 01:40 #3
I kan tilføje en ny række kaldet sortering, her får produkterne tal fra 1-20.

I sql udtrækket arrangeres de så efter sortering.

Dertil laves der en

function changeSort($way, $id){

$res = sql("SELECT sortering FROM tabel WHERE id = 'id'");

$nyplads = ($way == "op") ? $res[0]-- : $res[0]++;

sqlquery("UPDATE tabel SET sortering = 'SWAP' WHERE sortering = '$nyplads'");
sqlquery("UPDATE tabel SET sortering = '$nyplads' WHERE sortering = '$res[0]'");
sqlquery("UPDATE tabel SET sortering = '$res[0]' WHERE sortering = 'SWAP'");

}

Du kan så lave en liste over alle produkterne, og i siden lave pile op og ned, hvor dem op kører funktionen changeSort("op", $id) og omvendt ned:)
Avatar billede mysli Nybegynder
30. juli 2005 - 01:41 #4
Og undskyld fejlene, men det er sendt og er træt:)
Avatar billede simonwh Nybegynder
30. juli 2005 - 01:45 #5
mysli, tak for hjælpen. Det er muligvis noget vi kan bruge. Hvordan får vi lagt sortering på de allerede lidt over 100 produkter som allerede er inde i db'en?
Avatar billede coderdk Praktikant
30. juli 2005 - 03:13 #6
UPDATE tabel SET id = id+1 WHERE id > 3

og så indsæt en ny med id 4?
Avatar billede mysli Nybegynder
30. juli 2005 - 11:40 #7
$antal = sql("SELECT count(id) FROM tabel");

for ($x=0; $x < $antal; $x++){
$sortering = $x++;
sql("UPDATE tabel SET sortering = '$sortering' LIMIT $x,1");
}
Så opdatere den alle dine nuværende rækker:)
Avatar billede simonwh Nybegynder
30. juli 2005 - 11:44 #8
Tak for jeres svar. Jeg vil se hvad vi kan gøre når programmøren kommer hjem.
Avatar billede simonwh Nybegynder
30. juli 2005 - 11:46 #9
Ups? Er ny så er ikke helt med på det med point...
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester