0

MySQL には、名前、ID、位置、およびコンテンツの値を持つテーブルがあります。コンテンツは、id でクエリを実行することにより、php のページに読み込まれます。位置はphpで使用され、位置の値で昇順のメニュー項目を持つ動的メニューを作成します。

たとえば、3 つの行があり、各行の位置の値が 1、2、または 3 であるとします。ユーザーがメニュー、項目の位置を変更したり、新しい項目を追加したりできるようにするフォームを作成しようとしています。 . したがって、位置 3 の行を位置値 1 に変更したい場合は、2 を 3 にし、1 を 2 にする必要があります。または、新しいアイテムが追加された場合、その位置とその下のすべての位置を上に移動する必要があります。価値。

これにアプローチする最良の方法は何ですか?任意の提案をいただければ幸いです。

4

3 に答える 3

1

新しいアイテムを追加する場合は、最初にすべてのアイテムをposition同じかそれ以上の値で更新します。

UPDATE MenuItems SET position = position + 1 WHERE position >= newItemPosition;

更新する場合は、higherItemPosition よりも高い位置にあるアイテムのみを更新します (位置が入れ替わるだけです)。

UPDATE MenuItems SET position = position - 1 WHERE position = higherItemPosition;

newItemPosition がより低い値に更新された場合、次のようにします。

UPDATE MenuItems SET position = position + 1 WHERE position = lowerItemPosition;

于 2012-06-06T06:31:11.370 に答える
0

次の 2 つのアイデアが思い浮かびます。

メニューをAJAXでロードされたdivとして持ち、変更に反応してdivをリロードします。つまり、SQLを再実行できます

回答をJavaScript配列にロードし、ドラッグ変更機能を使用できるように表示します。

于 2012-06-06T06:31:30.027 に答える