0

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 値で更新することを確認しますWHEREname is $_POST['id']<--- this is elementin 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();
4

1 に答える 1