0

我正在使用 jQuery UI 为 UL 创建拖放功能。这个想法是您可以对列表中的项目进行排序,并且视图顺序将在数据库中更新(这是有效的)。我现在尝试添加的功能是能够将 LI 拖到不同的 UL 中并更新数据库,以便应用程序知道 LI 进入哪个列表。该项目可以移动到不同的列表中,但是我发布到的 php 文件没有更新数据库。

PHP 文件像这样回显列表:

<div class="list_div">
    <h3>List #1</h3>
    <ul id="listnumber_25" class="ui-sortable" unselectable="on">
        <li id="item_134">list item 1</li>
        <li id="item_135">list item 2</li>
        <li id="item_136">list item 3</li>
        <li id="item_137">list item 4</li>
    </ul>
</div>
<div class="list_div">
    <h3>List #2</h3>
    <ul id="listnumber_26" class="ui-sortable" unselectable="on">
        <li id="item_138">list item 1</li>
        <li id="item_139">list item 2</li>
        <li id="item_140">list item 3</li>
        <li id="item_141">list item 4</li>
    </ul>
</div>

JS看起来像这样:

//sort / change list
$(document).ready(function(){
    $(".list_div ul").sortable({
        receive: function(event, ui) {
            var list_id = this.id;
            var li_to_reassign = ui.item.attr('id');
            $.post("functions/changelist.php", { li_to_reassign: li_to_reassign, list_id: list_id } );
        }
    });
});

函数/changelist.php:

<?

$list_id = $_POST['list_id'];
$list_id = substr('$list_id', 11); 

$li_to_reassign = $_POST['li_to_reassign'];
$li_to_reassign = substr('$li_to_reassign', 5); 

//------------------------------------------

// connect to DB
$host="localhost"; // Host name 
$username="********"; // Mysql username 
$password="********"; // Mysql password 
$db_name="**********"; // Database name 

// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

$sql="UPDATE tasks SET list_id='$list_id' WHERE id='$li_to_reassign'";
$result=mysql_query($sql);

?>

我似乎找不到问题!

4

1 回答 1

0

在您的 php 文件中,您正在获取值,$_POST但在您使用新值重新评估这些变量之后,使用一个$str甚至没有设置的变量:

$list_id = $_POST['list_id'];
$list_id = $list_id($str, 11); 

$li_to_reassign = $_POST['li_to_reassign'];
$li_to_reassign = $li_to_reassign($str, 5); 

它应该是:

$list_id = $_POST['list_id'];

$li_to_reassign = $_POST['li_to_reassign'];

编辑(如果您想获得$_POST变量的子串,请使用函数substr像这样):

$list_id = $_POST['list_id'];
$list_id = substr($list_id, 11); 

$li_to_reassign = $_POST['li_to_reassign'];
$li_to_reassign = substr($li_to_reassign, 5); 
于 2012-08-08T15:47:59.547 回答