将jQuery的Sortable列表插入MySql

时间:2014-12-04 08:00:53

标签: php jquery mysql ajax jquery-ui-sortable

我正在尝试将jquery的可排序列表值插入到MySql中。我在插入时遇到了在MySql中循环的问题 我已经对这样的项目进行了分类

-------------
 Sorted List
-------------
   did-1
   fid-1
   fid-2
   fid-3

在此之后我使用了'序列化'获取这些排序列表

$('.sortable').sortable({
connectWith: '.sortable',
tolerance: 'pointer',
update: function (event, ui) {
    $('#add_list').click(function(){        
        var data = $('#drop_list1').sortable('serialize');
        $.ajax({
            data: data,
            type: 'POST',
            url: 'addnewlist.php',
            success: function(data){                    
            }
        });
    }); 
}

我想要的是 - 每个'多次插入,' fid'应插入。在我的MqSql中 - '(did-1,fid-1)(did-1,fid-2)(did-1,fid-3)'

我在PHP中试过这个。

foreach($_POST['doc'] as $doc)
{
    for($i=0;$i<count($_POST['doc']);$i++)
    {
        $form=$_POST[$i]['form'];
        echo $sql="INSERT INTO addnewdoc(doc_id,form_id) VALUES ($doc,$form)";
        $res=parent::_executeQuery($sql);
    }
}

1 个答案:

答案 0 :(得分:1)

如果我正确理解了这一点,您需要遍历文档,然后遍历每个文档的表单。这会改变吗?

foreach($_POST['doc'] as $doc)
{
    foreach($_POST['form'] as $form)
    {
        echo $sql="INSERT INTO addnewdoc(doc_id,form_id) VALUES ($doc,$form)";
        $res=parent::_executeQuery($sql);
    }
}

最终会为每个组合运行插入查询。最好将所有值构建到单个查询中,然后再执行一次。例如:

$sql = "INSERT INTO addnewdoc(doc_id,form_id) VALUES ";
$values = Array();
foreach($_POST['doc'] as $doc)
{
    foreach($_POST['form'] as $form)
        $values[] = "($doc,$form)";
}
$sql .= join(',', $values);
$res=parent::_executeQuery($sql);

将所有值收集到一个数组中,然后将每个值连接成一个用逗号分隔的字符串。然后,您可以运行单个插入查询以插入所有值。