2011-01-05 21 views
2

我正在編寫一個web應用程序,使用php & mysql,並想知道處理某些事情的最佳方法。該應用程序很簡單,並處理顯示包含文本的框(「單元格」)。 這裏的問題: 我有,比如說,3個細胞以顯示:小區A,小區B和小區D.在數據庫中的每個具有「優先級」,表示在其將要顯示的順序。單元格A的優先級是1,B's是2,D是3.現在它們將按順序顯示,但是當我想添加單元格C並將它放在B和D之間時,首先需要更改單元格D的優先級Cell C的房間位於中間。我應該如何處理數據排序,同時保持靈活性,以便將來進行更改?

我想也許我可以在默認情況下給出了一個新的小區的優先級是高量相鄰小區了,但會以同樣的方式最終失敗,因爲上面。

此外,我考慮使用不同的優先領域。我可以放置它之前的單元格的ID號碼,而不是使用抽象號碼來表示順序。這樣,在顯示一個單元格後,我的函數將執行一個選擇查詢來查找其「優先級」字段等於當前單元格的id並顯示它的單元格。但問題在於,如果一個單元格被刪除,那麼下一個單元格(以及其他順序)將不再顯示。

什麼是解決這個問題的最好方法是什麼?

回答

1

具有優先級列在優先採用十進制值和排序。使用小數點,很容易將新項目放入他們所屬的位置,而無需更改任何其他項目。

+1

爲了詳細說明,你可以通過添加2左右的項目和鴻溝的優先級,以獲得新插入C的優先級 – Mark 2011-01-05 01:52:28

0

簡陋:

// $result is what our database query returned. sample data used. 
$result = array(
    'name'=>'Leeroy Jenkins', 
    'age'=>'28', 
    'gender'=>'male', 
    'note'=>'At least I\'ve got chicken.' 
); 

// $data contains all of the current record's information. 
// the order of these is irrelevant. 
$data[0] = $result['name']; 
$data[1] = $result['age']; 
$data[2] = $result['gender']; 
$data[3] = $result['note']; 

// $priority is the order what we want the information displayed in. 
// change this to the preferred order using the numerical indexes from above. 
// this could even be read from the database, if desired. 
$priority = array(2, 1, 0, 3); 

// write out our information. 
foreach ($priority as $item) { 
    echo '<td>' . $data[$item] . '</td>' . PHP_EOL; 
} 

儘管複製存儲在$result的數據可能是對資源的浪費..正如我所說,簡陋。

0

在我的論壇代碼我簡單地添加到該端部和該簡單地交換所選擇的小區與所述一個高於或低於它,其避免之間插入的問題每個小區提供上/下按鈕。

相關問題