2013-07-17 79 views
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 VAR內iable以上..

我的表看起來像

|term_id| |name|  |slug|  |term_group| 
|100|  |element| |X Value here| |Y value here| 

您在更新功能我的目標slugterm_group看到,並與阿賈克斯的值更新它們WHERE名字是$_POST['id'] < ---這是element我表..一切都很好...但

如果我有一個新的$_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;

這是否有意義?

確定解決方案我終於用一個小邏輯和決定給這個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(); 
+1

我建議你儘量減少你的問題的範圍,以找到解決方案,它是太混亂了,你是混合的用戶界面和數據庫的問題,瞭解真正的問題 – fmodos

+0

這不是一個UI的問題。它實際上是多少簡單得多看起來我只是想盡可能清楚..總結起來,我只是想爲每個可拖動的項目添加一個新行,並更新所述行的x和y值..以上我只是描述我的佈局,並顯示出其實我可以更新行,我只是不能添加新行如果一個新的ID存在.. – Mike

+0

修改我的邏輯是好的,你會如何添加一個新行的每個元素,並在該行只改變X和Y值運行更新.. – Mike

回答

0

你必須使用{}內使用sql查詢的$wpdb->terms附近的雙引號使其成爲variable_name。

$query = "INSERT INTO {$wpdb->terms} (term_id, name, slug, term_group) VALUES (%s, %s, %s, %s)"; 
+0

我沒有......但看,我沒有看到一個新行如何被創建時,100是$ term_id = 100 ...這將有遞增,並堅持(只增加時,有一個新的$名)粘貼時的名稱x和y的值改變...所以我的意思是行term_id是100 ... ...這是有史以來第一次拖將發生這是我們$名稱 – Mike

+0

名@Mike沒有'你'UPDATE' WHERE'條件。 –

+0

我能得到一個例子..我寫的更新方式是基於食品... – Mike

相關問題