jQuery Sortableを取得して、データベーステーブルを更新することができました。これはすばらしいことです。
ただし、これは、テーブル名の変更を除いて、ほぼ同じコードを実行している複数のページがあることを意味します。したがって、以下の例では、以下のUPDATE table_pagesセクション以外の同じコードを持つajax_lists_order.php、ajax_staff_order.phpなどがあり、これらはUPDATE table_lists、 UPDATEtable_staffなどに変更されています。
そこで、編集ページでtable_nameを定義する方法があるのではないかと思ったので、現在の$keyと$valueの部分と同様に、 table_nameをスクリプトに投稿するajax_order.phpページを1つだけ作成できます。?
ヘッダーのスクリプトに何かを追加し、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を使用したことはありませんが 、ヘッダースクリプトの「serialize」の閉じ括弧の後に「table_pages」テーブルを追加してから、 parse_str($ _ POST ['table' ]、$ tableName); parse_str($ _ POST ['pages']部分の上の注文ページにありますが、役に立ちません。