2012-02-27 43 views
0

我在PHP中構建某種CMS,我遇到了一個問題,希望你們可以幫我解決這個問題。PHP和MySQL:動態位置/訂單更新

我會發佈一個我的數據庫看起來像什麼和我需要做什麼的例子。

ID | Name | Order 
1 | A1 | 1 
2 | A2 | 3 
3 | A3 | 4 
4 | A4 | 2 

我需要的是動態地修改數據庫的「訂單」列,如如果我是「A2」的順序更改爲「2」的方式,它會自動改變「的順序A4「,最初是'2',並將其更新爲'A2'的任何順序,即'3'

如果這還不夠清楚,我會非常樂意屏蔽拍攝我的數據庫以澄清它更多。

在此先感謝

+0

那麼,你嘗試過這麼遠嗎? – Flukey 2012-02-27 16:17:01

+0

我認爲通常這樣做的方式是將每個新元素的順序提交回服務器並一次全部更新。所以,當排序改變時,每個受影響元素的新位置值和id被提交回服務器。 – menacingly 2012-02-27 16:17:22

+2

Duplicate:http://stackoverflow.com/questions/2453964/mysql-procedure-to-update-numeric-reference-in-previous-rows-when-one-is-updated – Flukey 2012-02-27 16:18:07

回答

1

變化「A2」的「2」的命令,它會自動改變 秩序「A4」的原本是「2」,並更新到任何順序 「 A2' 是,是 '3'

UPDATE Orders SET `Order` = (SELECT `Order` FROM Orders WHERE id = 2) WHERE `Order` = 4; 
UPDATE Orders SET `Order` = 3 WHERE id = 2; 
+0

看,如果我正在處理已知的數字,這不會,因爲我已經在該表格中有超過20行,並且我希望整個(2,3,4 ... etc)是動態的使用變量或其他東西。 – Khaled 2012-02-27 17:08:22

+0

沒錯。您可以簡單地將您的變量替換爲上述SQL中的文字。 – webbiedave 2012-02-27 17:17:40