2013-05-19 60 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/) –

相关问题