【问题标题】:Add and update row in database在数据库中添加和更新行
【发布时间】:2013-07-17 14:03:39
【问题描述】:

我正在将一些来自 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|

您在更新函数中看到我以slugterm_group 为目标并使用ajax 值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; 时,例如当我拖动 &lt;div class="MYELEMENT draggable" id="element"&gt;&lt;/div&gt; 时,它会像上面一样存储到数据库中

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

但是当我将$term_id = 100; 更改为$term_id = 101; 并拖动&lt;div class="MYELEMENT draggable" id="element2"&gt;&lt;/div&gt; 上方的行时...并创建了一个新行

|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();

【问题讨论】:

  • 我建议您尝试缩小问题的范围以找到解决方案,因为您在混合 ui 和 db 问题时理解真正的问题太混乱了
  • 这不是 UI 问题。它实际上比看起来要简单得多,我只是想尽可能清晰。总结一下,我只想为每个可拖动项目添加一个新行, 并更新所述行的 x 和 y 值.. 上面我只是在描述我的布局,并表明实际上我可以更新一行,如果存在新的 id,我只是不能添加新行..
  • 修改我的逻辑是可以的,你将如何为每个元素添加一个新行,并在该行上运行更新只更改 X 和 Y 值..

标签: php database


【解决方案1】:

您必须在 sql 查询的 $wpdb-&gt;terms 附近的双引号内使用 {} 以使其成为变量名。

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

【讨论】:

  • 我做到了...但是看,当 $term_id = 100 为 100 时,我看不到如何创建新行...必须增加并坚持(仅在有当名称 x 和 y 值发生变化时,新的 $name) 会保持不变...所以我要说的是行 term_id 是 100...首先拖动的将取代我们的 $name
  • @Mike 您的UPDATE 中没有WHERE 条件。
  • 好吧,我尝试过应用它.. 但我认为我的想法不正确......让我再摆弄一下......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-27
  • 2013-04-19
  • 1970-01-01
  • 1970-01-01
  • 2012-12-26
相关资源
最近更新 更多