为不同的jQuery可排序页面创建一个订单更新页面

时间:2012-11-10 18:48:14

标签: jquery mysql ajax jquery-ui-sortable

我设法让jQuery Sortable更新数据库表,这很棒。

然而,这意味着我现在有多个页面运行几乎相同的代码,而不是表名的更改。所以在下面的示例中,我有一个ajax_lists_order.php,一个ajax_staff_order.php等,其中的代码与 UPDATE table_pages 部分相同,但下面的部分更改为 UPDATE table_lists UPDATE table_staff

所以我想知道是否有办法在编辑页面中定义 table_name ,所以我可以只有一个ajax_order.php页面,其中 table_name 已发布到脚本,就像目前的$ key和$ value部分一样?

我认为我需要在头文件中添加一些内容,然后在ajax_order.php页面中的parse_str之后添加一些内容?

目前我正在使用的一个例子......

在编辑订单的CMS页面页面中:

<script language='javascript'>
    $(document).ready(function(){
        $('#menu-pages').sortable({
        placeholder: 'ui-state-highlight',
            update: function(event, ui) {
            $.post('ajax_pages_order.php', { type: 'orderPages', pages: $('#menu-pages').sortable('serialize') } );
            }
        });
    });
</script>

在同一页面的正文中:

$result = mysql_query("SELECT id, page_name, sort_order FROM table_pages ORDER BY sort_order ASC") or die(mysql_error());

while($row = mysql_fetch_array($result))
{
printf('<li id="page_%s">%s</li>', $row['id'], '<a href="page.php?id=' . $row['id'] . '">' . $row['page_name'] . '</a>');
}

在ajax_pages_order.php中

parse_str($_POST['pages'], $pageOrder);
foreach ($pageOrder['page'] as $key => $value) {
    mysql_query("UPDATE table_pages SET `sort_order` = '$key' WHERE `id` = '$value'") or die(mysql_error());
}

我谈到Javascript时很糟糕,之前没有使用过parse_str,但我尝试添加 ,table:'table_pages'在Header脚本中'serialize'的结束括号后,然后 parse_str($ _ POST ['table'],$ tableName ); parse_str($ _ POST ['pages'] 部分上方的订购页面中,但无济于事。

0 个答案:

没有答案