2012-02-09 143 views
0

如果我有4個db行,我希望能夠使用列「位置」對它們進行排序。php mysql排序順序。使用超鏈接更改排序順序(向上/向下箭頭)

ID - 姓名 - 位置

1 - row1 - 1 
2 - row2 - 2 
3 - row3 - 3 
4 - row4 - 4 

我知道如何使用PHP SELECT排序按等

但我希望能夠按這將交換位置的超鏈接。

Row img  img 
row1 (down) 
row2 (up) (down) 
row3 (up) (down) 
row4 (up) 

即向上按第2行會改變ROW2位置 - > 1,且將改變第1個位置 - > 2

任何幫助將不勝感激。

+0

你究竟想要什麼?它只是一個你感興趣的JavaScript嗎?或PHP代碼+數據庫結構重新安排數據庫表中的數據? – 2012-02-09 11:42:02

+0

要麼是經過建議進入什麼樣的認爲是最好的解決方案。如果你有想法,請告訴我。 – Codded 2012-02-09 12:38:42

+0

瞭解,但是您提出問題的方式似乎是人們認爲這是一個JavaScript/GUI問題。你應該重新提出你的問題,強調你有一個職位專欄,並想要一個解決方案來操縱它的價值。 – 2012-02-09 13:29:21

回答

0

超鏈接,加載一個PHP頁面,這需要幾個參數:

  1. 要向上/向下移動
  2. 你想向上移動該行的當前位置的行的ID /下
  3. 行的ID下/你要移動
  4. 你想無論你想向上移動,以向上/向下移動
  5. 或行的上下行的當前位置的行上方你(例如它的id)和th目前的職位,以及新的職位。

由此,您將確切地知道您需要做什麼,並且可以設計一個查詢來交換數據庫中的這些項目。完成後,重新加載頁面。

+0

是的,我知道這理論 – Codded 2012-02-09 12:37:44

0

最簡單的做法是使用允許項目重新排序的JavaScript庫。 查看結果: http://jqueryui.com/demos/sortable/

一旦用戶完成重新排序,您可以保存所有元素的當前位置。 使用此方法,用戶可以根據自己的喜好重新排列所有項目,而無需每次點擊「上」或「下」時刷新頁面。

+0

謝謝,聽起來不錯。這將如何保存下次訪問該頁面時。 – Codded 2012-02-09 12:37:11

+0

用戶完成訂購物品後,他應點擊按鈕/鏈接以保存當前訂單。在該事件中,您需要序列化這些項目並將它們發送到服務器。 – 2012-02-09 12:47:53

+0

如果您需要更多有關保存訂購商品的信息,我只是發現了另一個問題:http://stackoverflow.com/questions/7342727/jquery-ui-saving-sortable-list – 2012-02-09 12:52:48

0

嗯 這個怎麼

while ($row = mysql_fetch_array($query)) { 
@$group[] = $row['img']; 
} 

and call it 
echo $group[1]; 
echo $group[3]; 
echo $group[0]; 
echo $group[2]; 

等 IDK的,如果這你的意思

如果你想只交換UI中的位置
0

,您可以使用JavaScript。

如:

<div id="1" > <div id="data_1">data goes here for row1</div> </div> 
<div id="2" > <div id="data_2">data goes here for row2</div> <a onclick="moveUp(2);"> UP</a> <a onclick="moveDown(2);"> Down</a></div> 
<div id="3" > <div id="data_3">data goes here for row3</div> </div> 

<script> 
function moveUp(n){ 
    var m = n-1; 
    var own_id = 'data_'+n; 
    var new_id = 'data_'+m; 
    var tmp_data = ''; 
    var own_data = $(own_id).innerHtml; 
    if($(new_id) != 'undefined'){ 
    tmp_data = $(new_id).innerHtml; 
    $(new_id).innerHtml = own_data; 
    $(own_id).innerHtml = tmp_data; 
    } 

} 

function moveDown(n){ 
    //same logic can be applied here 
} 
</script> 

希望這將有助於。