1

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']部分の上の注文ページにありますが、役に立ちません。

4

0 に答える 0