1

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

然而,这意味着我现在有多个页面运行几乎相同的代码,而不是更改表名称。因此,在下面的示例中,我有一个 ajax_lists_order.php、一个 ajax_staff_order.php 等,除了下面的UPDATE table_pages部分更改为UPDATE table_listsUPDATE table_staff等之外,还有相同的代码。

所以我想知道是否有一种方法可以在编辑页面中定义table_name,所以我可以只拥有一个将table_name发布到脚本中的 ajax_order.php 页面,就像现在使用 $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 时,我很糟糕,但是我尝试 在 Header 脚本中的'serialize'的右括号之后添加, table: 'table_pages',然后parse_str($_POST['table' ], $tableName); parse_str($_POST['pages']部分上方的订购页面中,但无济于事。

4

0 回答 0