2012-02-27 4 views
0

PHPでCMSを構築しています。PHPとMySQL:動的なポジション/注文の更新

私のデータベースの外観と実行する必要があるものの例を掲載します。私は「2」に「A2」の順序を変更した場合、それは自動的に "の順序を変更しますのように、動的にDBの「注文」欄を編集する方法です必要なもの

ID | Name | Order 
1 | A1 | 1 
2 | A2 | 3 
3 | A3 | 4 
4 | A4 | 2 

A4 'は元々' 2 'だったので、' A2 'の順番に更新しました。' 3 'です。

これではっきりしない場合は、もっと。事前に

おかげ

+0

である、でしたか'? – Flukey

+0

私はこれが通常達成される方法は、サーバーにすべての新しい要素の順序をサブミットし、すべてを一度に更新することだと思います。ソートが変更されると、影響を受けるすべての要素の新しい位置値とIDがサーバーに返されます。 – menacingly

+2

重複:http://stackoverflow.com/questions/2453964/mysql-procedure-to-update-numeric-reference-in-previous-rows-when-one-is-updated – Flukey

答えて

1

「2」に変更し「A2」の順序を、それが自動的に '2'もともと「A4」の 順序を変更し、どのような順序 にそれを更新しますA2' は、あなたがこれまでにしようとしているものを3 'まあ

UPDATE Orders SET `Order` = (SELECT `Order` FROM Orders WHERE id = 2) WHERE `Order` = 4; 
UPDATE Orders SET `Order` = 3 WHERE id = 2; 
+0

参照してください、私はそのテーブルにすでに20以上の行を持っているので、私は既知の数字を扱っていた場合、これはうまくいくでしょう、私は全体(2、3、4 ..など)を動的にしたい変数などを使って – Khaled

+0

上記のSQLのリテラルで変数を代入するだけで済みます。 – webbiedave