2017-01-18 6 views
0

jQuery .sortableを使って、Wordpress環境のプラグインの管理ダッシュボードにあるテーブルの行を並べ替えることができます。配列を並べ替えてデータベースに保存して、再ソートされた行を保存する方法は? (jQuery sortable | Wordpress | PHP)

各行には、データベースに保存されたデータが表示され、その順序はデータベース内の配列の保存方法に基づいています。各項目は、新規追加ごとに現在の配列項目リストに追加されます(たとえば、最後に追加された項目がリストの最後に追加されます)。現在、項目を並べ替える方法はありません。配列の内容の

例:上記の配列に基づいて

a: 4: { 
    s: 4: "id-0"; 
    a: 2: { 
     s: 5: "first"; 
     s: 4: "girl"; 
     s: 6: "second"; 
     s: 5: "woman"; 
    } 
    s: 4: "id-1"; 
    a: 2: { 
     s: 5: "first"; 
     s: 3: "boy"; 
     s: 6: "second"; 
     s: 3: "man"; 
    } 
    s: 4: "id-2"; 
    a: 2: { 
     s: 5: "first"; 
     s: 4: "frog"; 
     s: 6: "second"; 
     s: 6: "prince"; 
    } 
    s: 4: "id-3"; 
    a: 2: { 
     s: 5: "first"; 
     s: 2: "hi"; 
     s: 6: "second"; 
     s: 5: "hello"; 
    } 
} 

は、私のテーブル行が表示されます。今、私は最近、彼らがすることができ、私の行に jQuery sortableを実装している

<TABLE> 

ROW 1 - first: girl | second: woman 
ROW 2 - first: boy | second: man 
ROW 3 - first: frog | second: prince 
ROW 4 - first: hi | second: hello 

</TABLE> 

ドラッグ&ドロップ挙動を使用して解決されました。

私の質問はどのように並べ替えられた行の現在の順序と同じ方法で配列項目を並べ替えるのですか?どうしますか?

答えて

2

テーブル行にデータを追加できます。だから、テーブルを作成するとき、あなたはそれぞれの行に属性を追加します。

<tr data-source-id="id-0"> 

フォームを送信するときは、すべてのデータの属性を取得することができます。

var order = []; 
jQuery.find('tr').each(function() { 
    order.push(jQuery(this).attr('data-source-id')); 
}); 
// order == ["id-0", "id-1", ...] 

その後、あなたは、AJAXを使用してそれらを送信したり、追加することができますそれらを非表示のフォームフィールドに追加し、PHPを使用して配列を並べ替えます。 PHP側では

、あなたはuksort使用することができます。

$data = //my data 
$order = ["id-0", "id-1", ...] 
uksort($data, function($k1, $k2) use ($oder) { 
    return array_search($k1, $order) - array_search($k2, $order); 
}); 
関連する問題