私はeditableとsortableのテーブルを持っています。この表には、親と子の2種類の項目があります。私は、ユーザーが2つの間で切り替えて、2つの間をドラッグして、その順序を更新できるようにしたいと思います。データベーステーブルは次のようになります。これを熟考してください。 PHP brain twister、ソート可能な編集可能なテーブル
+-------------------------------------------------------+-----------+
|id | userid | item | parent | item order | parent_id |
+-------------------------------------------------------+-----------+
|23 | 5 | cheese burger |false | 2 | 128 |
+-------------------------------------------------------+-----------+
|128| 5 | Burgers |True | 0 | 0 |
+-------------------------------------------------------+-----------+
|10 | 5 | Hamburger |false | 1 | 128 |
+-------------------------------------------------------+-----------+
|25 | 5 | steak burger |false | 3 | 128 |
+-------------------------------------------------------+-----------+
|90 | 5 | fish burger |false | 4 | 128 |
+-------------------------------------------------------+-----------+
|29 | 5 | fries |True | 5 | 0 |
+-------------------------------------------------------+-----------+
|22 | 5 | cheese Fries |false | 6 | 29 |
+-------------------------------------------------------+-----------+
|987| 5 | french fries |false | 7 | 29 |
+-------------------------------------------------------+-----------+
これは私のヘッダーを表すので....
BURGERS
Hamburger
Cheese burger
Steak burger
Fish burger
FRIES
Cheese fries
French fries
アッパーケースのようなメニュー*
を与えるだろう、私は正しい順序、何の問題を得ることができます。私のスクリプトPOST
は、アイテムオーダーの配列です。
Array
(
[0] => 128
[1] => 10
[2] => 23
[3] => 25
[4] => 90
[5] => 29
[6] => 22
[7] => 987
)
それから私は、DBはこれに似これを反映するために更新...私はつまずきい
UPDATE menu SET item_order = '0' WHERE item = '128'
UPDATE menu SET item_order = '1' WHERE item = '10'
UPDATE menu SET item_order = '2' WHERE item = '23'
UPDATE menu SET item_order = '3' WHERE item = '25'
UPDATE menu SET item_order = '4' WHERE item = '90'
UPDATE menu SET item_order = '5' WHERE item = '29'
UPDATE menu SET item_order = '6' WHERE item = '22'
UPDATE menu SET item_order = '7' WHERE item = '987'
は親ID権を取得しています。私は、parent ID
を見つけて、< >
のことをやっていますが、それは一貫して正しいとは言えません。ヘッダーをドラッグすると、子供たちが骨折します。すなわち、すべての子供がドラッグされたヘッダを採用する。どのようにこれにアプローチしますか?上記の更新は、新しいアイテムが追加されたとき、またはアイテムがドラッグされたときに発生します。
EDIT
これが動作しているようです......
$order = "SELECT itemOrder, itemId, header from menuItems && user = $user order by itemOrder";
$order_query = mysql_query($order);
while($order_result = mysql_fetch_array($order_query))
{
$parent = $order_result['header'];
if ($parent == 'true')
{
$current_parent = $order_result['itemId'];
}
$item_id = $order_result['item_id'];
$parent_update = "UPDATE menuItems SET parent = '$current_parent' WHERE itemId = $itemId";
mysql_query($parent_update);
あなたの編集が表示されます。すばらしいです。お役に立てて嬉しいです。私は擬似コード構造をより正確に(具体的にはアイテムの2つの別々のアップデートに)従っていたでしょうが、あなたは今やっているように、ヘッダを自分自身を親として持つように更新しません。 :) – GolezTrol