2013-05-19 61 views
4

我有兩個列表(1和2),並且我想在項目從一個移動到另一個時更新它們。JQuery UI可排序保存與連接列表

HTML:

<ul class="sortable" id="task-list"> 
    <li id="listItem_1">Value 1 </li> 
    <li id="listItem_2">Value 2 </li> 
    <li id="listItem_3">Value 3 </li> 
</ul> 

<ul class="sortable" id="task-list-two"> 
    <li id="listItem_4">Value 1 </li> 
    <li id="listItem_5">Value 2 </li> 
    <li id="listItem_6">Value 3 </li> 
</ul> 

JS:

$("#task-list, #task-list-two").sortable({ 
    handle : '.handle', 
    connectWith: ".sortable" 
    update : function() { 
    var order = $('#task-list').sortable('serialize'); 
    $("#info").load("process-sortable.php?"+order); 
    } 
}); 

但我想更新列表(1或2)爲好。我是否需要向process.sortable.php發佈其他變量?

我現在有在foreach只適用於第一個列表(簡體):

$task = nl2br($_POST['task']); 
$userid = $_SESSION['userid']; 
$position = $_POST['p']; 
$date = $_POST['date']; 

$i = "INSERT INTO tasks VALUES('','$task','$userid','0','$position','$date')"; 
$doi = mysql_query($i) or die(mysql_error()); 

提前感謝!

修訂FOREACH PHP:

foreach ($_GET['listItem'] as $position => $item) 
{ 
    $list = $_GET['list']; 
    if($list == "task-list") 
    { 
     $list = 1; 
    } 
    if($list == "task-list-two") 
    { 
     $list = 2; 
    } 
    $sql = "UPDATE `tasks` SET `position` = $position AND date = '$list' WHERE `id` = $item"; 

    print($sql); 
    $dosql = mysql_query($sql) or die(mysql_error()); 
} 
+0

如果你正在做的是運行服務器端腳本,你可能should'nt使用負荷()? – adeneo

+0

我這樣做是爲了檢索發佈的SQL語句。 – Andre

+0

'list'參數從哪裏來? – daVe

回答

3

你可以只通過名單ID到PHP頁面,如:

$("#info").load("process-sortable.php?"+order+"&list="+$(this).attr('id')); 

一旦PHP頁面上,你可以做一個條件列表類型。

您還需要更改順序變量來解釋不同列表:

var order = $(this).sortable("serialize"); 
+0

看起來合法。但是,我得到這個錯誤:爲foreach()提供了無效的參數。 使用foreach代碼更新我的問題。 – Andre

+0

這幾乎可行。它更新項目,但沒有正確的列表。它給了它來自它的列表ID,而不是它來的。任何想法如何解決? – Andre

+2

我弄了一個小提琴的例子,我沒有看到問題...雖然也許我的例子並沒有考慮到所有的變數。 [我的例子](http://jsfiddle.net/gralex07/tfj7s/) –

相關問題