2014-07-18 51 views
1

我有一個可以用jQuery ui進行排序的列表。我能夠確保這些用途所做的更改並將其存儲在var $ order中。我的問題是,我不知道如何將它保存在MySql數據庫中。我怎樣才能保證MySql表中的訂單安全? (請從最基本的解釋,我只是學習php)使用php和MySql保存可排序列表的順序

HTML。 index.html:

<ul id="sortable"> 
    <li id="1">item1</li> 
    <li id="2">item2</li> 
    <li id="3">item3</li> 
</ul> 

JQUERY。 index.html的:

$('#sortable').sortable({ 
    update: function(event, ui) { 
     var newOrder = $(this).sortable('toArray').toString(); 
     $.get('6.php', {order:newOrder}; 
     }); 
    } 
}); 

PHP:6.php:

$order = $_GET['order']; 
// echo $order; // this gives something like 2,3,1 

我怎樣才能在下面的表格使用PHP和MySQL安全$訂單?
我應該改變id來給出新的訂單嗎?將訂單存儲在新列中會更好嗎?我如何挑選每個元素並放在桌子的正確位置?

類似:

mysqli_query($con,"UPDATE MyTable 
        SET ... 
        WHERE ... "); 

MySQL表MyTable的:

id concept order 
----------------------- 
1  item1 
2  item2 
3  item3 

回答

1

更新與正確的順序爲每個項目數據庫:

$order = $_GET['order']; 
    // echo $order; // this gives something like 2,3,1 


$itemIds = explode(',', $_GET['order']); 

foreach($itemIds as $priority => $itemId) { 
    // Here you have to update your table, something like UPDATE items SET priority = $priority WHERE id = $itemId 
} 

然後查詢以獲得正確的順序所有項目:

SELECT * FROM items ORDER BY priority 

(「訂單」是保留關鍵字在SQL中,所以你不應該打電話給你的領域的'訂單',在這裏我選擇'優先'而不是。)

+0

感謝您提供詳細信息(如上次查詢),解釋每一步並簡化操作。據我所知,這真的有幫助。 – Nrc

0

你可以,如果它的唯一的字符串爆炸的順序。當您插入它時,您可以將數組鍵用作排序號。

$order = $_GET['order']; 
$items = explode(',', $order); 

foreach($items as $key => $item) { 
// Do insert where order = $key 
} 

希望這有助於你:)

+0

歡迎來到SO。你提供的答案已被標記爲審查,因爲它基本上只是代碼。你能否詳細說明你的答案,稍微解釋一下,並提出解決OP問題的方法和原因?謝謝。 –

1
$order=explode(',',$_GET['order']); 
foreach($order as $num=>$id){ 
    if((int)$id!=0){ 
     mysqli_query("UPDATE `MyTable` SET `order`='".$num."' WHERE `id`='".(int)($id)."'"); 
    } 
} 

0)$order=explode(',',$_GET['order']); - 在此之後$order=array(2,3,1);

在SQL查詢1)可使用的順序領域。需要接受「`」。

2)特別爲停止sql注入 - 更好(和更快)的方法 - 將即將到來的變量轉換爲整數格式(詳見我的答案在評論中)。

3)在foreach中寫入$ num - variable - 數組元素的序號。 0,1,2, - 可用於數據庫記錄的順序。

+1

描述你做了什麼,不要只是在沒有解釋的情況下發布代碼。 – Synchro

+0

我不明白。什麼是(int)$ id你能解釋一下嗎? – Nrc

+1

黑客可以發送不「1,2,3」,也許:「1」; DELETE TABLE MyTable;,3「,你的數據表被刪除。 (int)$ variable - 將變量轉換爲整數格式。如果發送字符串 - 在$ variable =(int)$ variable之後; $變量自動轉換爲0 – Uvadzucumi