Jquery / PHP:嵌套的可排序序列化

时间:2013-01-02 13:54:29

标签: php sql jquery

我正在为cms创建一个菜单列表脚本,但我在使用jquery时遇到了困难。 我已经获取了http://mjsarfatti.com/sandbox/nestedSortable/的来源并制作了一个PHP更新/插入脚本来更新/插入数据库中的链接。我正在使用序列化函数将数据传递给脚本。但现在我还想更新/插入li元素的名称。做这个的最好方式是什么? 我正在使用以下脚本:

foreach ($menu as $key => $value) {

// ul exists
$exists =  mysql_query("SELECT * FROM menu_items WHERE id='".$key."'");
$exists = mysql_num_rows($exists);

// not a Sub menu
if($value === 'null')
{
    $value = 0;


    if($exists == 'null')
        {

        mysql_query("INSERT INTO menu_items (id, menu_id, page_id, name, parent_id, page_order)
         VALUES (".$key.", 1, 1, 'Geen Naam', ".$value.", " .$y. ") ") or die (mysql_error());
    }


    else
    {   

    mysql_query("UPDATE menu_items SET page_order=" . $i . ", parent_id =0 WHERE id='" . $key . "'") or die(mysql_error());
    }

    $i++;
    $y = 1;
    echo "Index = ".$key. " Parent = ".$value. " i = ".$i." \r\n";  
}

else if($last === $value){
    $y++;
    mysql_query("UPDATE menu_items SET page_order=" .$y. ", parent_id =".$value." WHERE id='" . $key . "'") or die(mysql_error());


}
// Sub menu
else
{

    $y = 1;
    if($exists == 'null')
    {

        mysql_query("INSERT INTO menu_items 
        (`id`, `menu_id`, `page_id`, `name`, `parent_id`, `page_order`) 
        VALUES
        ('".$key."', '1', '1', 'Geen Naam', ".$value.", " .$y. "");
    }
    else
    {

        mysql_query("UPDATE menu_items SET page_order=" .$y. ", parent_id =".$value." WHERE id='" . $key . "'") or die(mysql_error());
    }



 echo "Index = ".$key. " Parent = ".$value. " i = ".$i.  " y = ".$y." \r\n";
 $last = $value;
}

以上用于更新菜单。

$('a[id=save]').click(function() {
    serial = $('ol.sortable').nestedSortable('serialize');
        $.ajax({
        url: "sort_menu.php",
        type: "post",
        data: serial,
        error: function(){ alert("theres an error with AJAX");
        }
        });

    });

在菜单排序页面中使用。     序列化:函数(选项){

        var o = $.extend({}, this.options, options),
            items = this._getItemsAsjQuery(o && o.connected),
            str = [];

        $(items).each(function() {
            var res = ($(o.item || this).attr(o.attribute || 'id') || '')
                    .match(o.expression || (/(.+)[-=_](.+)/)),
                pid = ($(o.item || this).parent(o.listType)
                    .parent(o.items)
                    .attr(o.attribute || 'id') || '')
                    .match(o.expression || (/(.+)[-=_](.+)/));

            if (res) {
                str.push(((o.key || res[1]) + '[' + (o.key && o.expression ? res[1] : res[2]) + ']')
                    + '='
                    + (pid ? (o.key && o.expression ? pid[1] : pid[2]) : o.rootID));
            }
        });

        if(!str.length && o.key) {
            str.push(o.key + '=');
        }

        return str.join('&');

    }

这是序列化部分。

0 个答案:

没有答案