我设法让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'] 部分上方的订购页面中,但无济于事。