2009-11-17 42 views
3

我希望我的客戶能夠訂購後端項目的項目列表的「秩序」。我認爲最簡單的方法是讓一個項目的數據庫表有一個名爲「order」的字段來獲取值。這是客戶端的價值。然後我可以運行按「訂單」字段排序的SQL查詢。如何處理DB(PHP)

現在我有很簡單..沒有邏輯..所以用戶將整理= 100一個項目和訂單= 200再..和一個具有較低值會得到第一上市。有沒有更好的方法來做到這一點?我正在考慮像「向上移動」和「向下移動」。等我試圖讓管理項目更方便。

任何想法將不勝感激!

回答

0

至於數據庫推移,使用命令字段中輸入您的解決方案是正確的。您可能不希望將此泄露給用戶,並且使用一對向上和向下箭頭可以避開文本輸入。當用戶點擊「向上」箭頭時,您基本上將特定記錄與其上方的記錄切換。在元語言:

// $myId holds id of record, $myOrder holds the order of the record 

SELECT id, order FROM t WHERE order < $myOrder LIMIT 1 
// Store id in $nextId, order in $nextOrder 

UPDATE t SET order = $nextOrder WHERE id = $myId 
UPDATE t SET order = $myOrder WHERE id = $nextId 

請注意,這只是一個非常粗略的草案,你將不得不添加適當的轉義。另外,如果你想要一個UNIQUE索引來確保嚴格的排序,你將需要改變最後兩條語句。

+0

您還必須添加一些額外的排序方法添加爲剛剛向上和向下移動是在不長的名單真的很方便。 – jeroen 2009-11-19 15:56:27

0

你可以提供UI功能(即按鍵和支持代碼)來實現「動起來」和「下移」,但在數據庫中,爲了保留用戶的序列,您可以選擇存儲排序鍵爲你已經看出。沒有其他辦法可以做到這一點。如果你想不同的用戶可以訂購相同的行不同,則SORTKEY將是一個單獨的「用戶一種」表的一部分,像這樣的模式:

itemKey  The primary key of the item table 
userKey  The primary key of the userID table (or maybe just the userID) 
sortOrder The sort key for this combination of user and product 

然後才能確定給定用戶的排序序列,你將加入該項目表中userSort表where userKey=[the user you're interested in]

1

你的做法是蠻好的,你正在試圖做什麼。對於客戶端界面方面,我建議使用​​庫。可排序接口的好處在於它可以通過AJAX輕鬆鏈接到您的存儲代碼,如下所示:http://harm.glucose-ontwerp.nl/dev/sortlist.php。送過來AJAX的數據ID列表和順序,他們應該是。