Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Nu er det nødt til at være lidt pseudokode, men du fanger forhåbentligt pointen. Jeg har skrevet ud fra det grundlag at du har en primærnøgle der hedder "id". Bruger du en sammensat primærnøgle (eks. parent og rank), så skal du selvfølgelig rette tilsvarende.
Start med at finde rank og parent for det punkt der skal flyttes: SELECT rank, parent FROM tabel WHERE id=X
Vi kalder dem for $Xrank og $XParent forneden.
Når du flytter et punkt et trin ned: UPDATE tabel SET rank=rank+1 WHERE id=X UPDATE tabel SET rank=rank-1 WHERE rank=$Xrank AND parent=$XParent
Op er det samme, men omvendt med + og -. Det ville nok ikke være nogen helt dum ide at "vende" den på forhånd, så du i virkeligheden finder det punkt der bliver flyttet ned og kører de førnævnte SQL-sætninger på den, da du på den måde slipper for at skrive næsten identiske SQL-sætninger.
Sletning af et punkt: DELETE FROM tabel WHERE id=X UPDATE tabel SET rank=rank-1 WHERE rank>$Xrank AND parent=$XParent
Hvis du har nogen mulighed for det bør du bruge en transaktion, for at sikre at du ikke ender med en halvfærdig opdatering fordi databasen pludselig går ned. Hvis det, som jeg vil tro, er MySQL du benytter, kræver det at tabeltypen er InnoDB.
Jeg kan dog ikke få det til at virke helt. Det punkt der flyttes virker fint - det stiger én i rank.
Det andet punkt forbliver dog uændret i rank.
Jeg har:
$res = mysql_query("SELECT rank, parent FROM sider WHERE id=$id"); $row = mysql_fetch_array($res); mysql_query("UPDATE sider SET rank=rank+1 WHERE id=$id"); mysql_query("UPDATE sider SET rank=rank-1 WHERE rank='$row[rank]' AND parent='$row[parent]' and id!='$id'");
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.