jQuery UIからデータベースにデータを保存しています....
$( ".MYELEMENT" ).draggable({
stop: function(event, ui) {
var pos_x = ui.position.left;
var pos_y = ui.position.top;
var divid = ui.helper.attr("id");
jQuery.ajax({
type: "POST",
url: window.ajaxurl,
data: { "action": "myAjax", id: divid, x: pos_x, y: pos_y }})
.done(function( msg ) {
});
}
});
これらの変数に注意してください。それらをスクリプトに渡します..
function myAjax() {
global $wpdb;
// The data here comes from an ajax call
$term_id = 100;
$name = $_POST['id'];
$slug = $_POST['x'];
$term_group = $_POST['y'];
// I'm adding into wp_terms a default table (for testing)...
$query = "INSERT INTO $wpdb->terms (term_id, name, slug, term_group)
VALUES (%s, %s, %s, %s)";
// Here I insert the ajax data into the columns
$wpdb->query($wpdb->prepare($query, $term_id, $name, $slug, $term_group));
$wpdb->update("$wpdb->terms",
array('slug' => $_POST['x'], 'term_group' => $_POST['y']),
array('name' => $_POST['id']));
die();
}
は$_POST['id'];
、この HTML 要素の ID です...
<div class="MYELEMENT draggable" id="element"></div>
この ID は、$name
上記の変数内に格納されます。
私のテーブルは次のようになります
|term_id| |name| |slug| |term_group|
|100| |element| |X Value here| |Y value here|
あなたは、更新関数で私がターゲットslug
にしterm_group
、それらを ajax 値で更新することを確認しますWHERE
name is $_POST['id']
<--- this is element
in my table..
新しい を持っている場合はどうなり$_POST['id']
ますか?
<div class="MYELEMENT draggable" id="element2"></div>// notice the ID changes
ID が変更され、ajax 値に渡されます。新しい行を作成し、その行の X 値と Y 値を更新し続けるにはどうすればよいですか? そして、これからも新しい要素を追加していきます..
<div class="MYELEMENT draggable" id="element3"></div>
<div class="MYELEMENT draggable" id="element4"></div>
各 div には独自の行が必要です。$term_id = 100;
たとえば、<div class="MYELEMENT draggable" id="element"></div>
これをドラッグすると、上記のようにデータベースに保存されます。
|term_id| |name| |slug| |term_group|
|100| |element| |X Value here| |Y value here|
しかし、スティックの上の行に変更$term_id = 100;
し$term_id = 101;
てドラッグすると<div class="MYELEMENT draggable" id="element2"></div>
...新しい行が作成されます
|term_id| |name| |slug| |term_group|
|101| |element2| |X Value here| |Y value here|
これは私が達成しようとしているものですが、手動で変更したくありません$term_id = 101;
これは理にかなっていますか?
OK SOLUTION私は最終的に少しロジックを使用し、ID の番号を与えることにしました..
echo '<div class="MYELEMENT draggable" id="100"style="left: '.$x.'px; top: '.$y.'px;"></div>';
echo '<div class="MYELEMENT draggable" id="102"style="left: '.$x.'px; top: '.$y.'px;"></div>';
echo '<div class="MYELEMENT draggable" id="103"style="left: '.$x.'px; top: '.$y.'px;"></div>';
次に、このように更新を実行します
global $wpdb;
//The data here comes from an ajax call
$term_id = $_POST['id'];
$name = $_POST['id'];
$slug = $_POST['x'];
$term_group = $_POST['y'];
//Im adding into wp_terms a default table (for testing)...
$query = "INSERT INTO {$wpdb->terms} (term_id, name, slug, term_group) VALUES (%s, %s, %s, %s)";
//Here I insert the ajax data into the columns
$wpdb->query($wpdb->prepare($query, $term_id, $name, $slug, $term_group));
$wpdb->update("$wpdb->terms", array('slug' => $_POST['x'], 'term_group' => $_POST['y']), array('term_id' => $_POST['id']));
die();