0

mysql テーブルに可変数の行があります。重要な列の内容に関係なく、それらが表示される順序を変更したいのですが、それを行う最善の方法は何ですか?

たとえば、私が持っている場合:

id , content, order-by
1  , d      , 1
2  , a      , 2
3  , v      , 3
4  , i      , 4
5  , d      , 5

フィールドを次のように並べ替えます。

id , content, order-by
3  , v      , 1
4  , i      , 2
5  , d      , 3
2  , a      , 4
1  , d      , 5

id でソートすると、次のようになります。

id , content, order-by
1  , d      , 3
2  , a      , 4
3  , v      , 1
4  , i      , 2
5  , d      , 5

複雑なのは、順序の変更、削除、または追加の影響を受ける他の行を手動またはプログラムで更新する必要があることです。これに時間を節約するために誰かがすでに行っている組み込みの機能やスクリプトはありませんか?

よろしくお願いいたします。

4

1 に答える 1

1

プログラムが順序を変更するたびに、order_by列を正しいorder_by値で更新する必要があります。私は、ドラッグアンドドロップでページの順序を変更できるアセンブリを使用したプログラムに取り組んでいました。ポジションは、保存するまでJS変数に保持されます。送信時に、改訂された注文が表で更新されます。

あなたがテーブルにアクセスするとき、あなたはしなければなりません:

 SELECT * from table order by order_by;

それはすべてあなたのテーブルのサイズとあなたが注文で何を達成しようとしているのかに依存します。

コメントで@MattGibsonが述べたように、リストのドラッグアンドドロップ順序を実装しようとしている場合は、jQueryUISortableを使用できます。あなたは次のようなことを達成することができます-

 var result = $('#sortable').sortable('toArray');
 $.post(
        url,
        "order="+result
 );

PHPのURLで位置の値を受け取り、それを処理します。

于 2012-10-11T05:58:40.480 に答える