0

我正在使用 jQuery 可拖动,当可拖动元素移动时,我使用 ajax 将这些 css 值(左、上)保存到数据库($wpdb)中......当有一个可拖动元素运行平稳时,我没有问题......但是添加到项目中我想添加多个可拖动元素,这就是我遇到问题的地方......这是我将数据发送到数据库的代码......

    global $wpdb;


    //The data here comes from an ajax call
    $_POST['x'];
    $_POST['y'];
    $_POST['id']; 

    $term_id = 100; 
    $name = $_POST['id']; 
    $slug = $_POST['x'];
    $term_group = $_POST['y']; 

    if(isset($_POST['id'],$_POST['y'], $_POST['x'])){
        print_r($_POST);
    }

    //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('name' => $_POST['id']));


    die();

这段代码总结起来:它连接到 $wpdb 然后我从 ajax 调用中获取数据并将它们存储在一个变量中。我的目标是 wp_terms 表......所以在可拖动元素stop上,ajax 数据被发送到我的脚本和存储在数据库中,update每次可拖动停止时,我都会保留该行,并且只更新位于&&中的x和具有of ...的值...这会很好地更新它,但是由于是静态值,因此我无法为元素创建新行有一个新的..这有意义吗..它比我想象的要简单得多......我正在尝试做我已经在做的事情但是当有一个新的时我需要生成一个yslugterm_groupname$_POST['id']$term_id = 100$_POST['id']$_POST['id']$term_id = 101如果我手动为该行提供一个 term_id 为 101 的动态,它会完全按照我想要的方式工作...

表是这样的...

桌子

我试图添加一个 101 和 silly2 .. 然后 102 silly3 .. 类似的东西,然后当最后两个值 x 和 y 更改时,152 和 32 更改但 term_id 101 保持不变,而 silly 2 保持不变......

在此处输入图像描述

这里的事情是我不想创建一个 silly、silly2、silly3 的新实例......我想覆盖最后两列......

4

2 回答 2

0

尝试在 sql 表定义中使用自动增量。如果您无法修改表定义,您可以再添加一张表并将数据与其链接。

编辑以回答更改的问题。
在插入新行之前,您需要检查表中是否存在该值。如果存在,则对该行执行更新 SQL 查询。否则插入新行。

于 2013-07-16T21:48:57.357 回答
0

如果您正在运行标准 Wordpress 安装,则该wp_terms表始终auto_increment默认为term_id,因此您可以删除 static $term_id,现在查询应该是:

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

$wpdb->query($wpdb->prepare($query, $name, $slug, $term_group));

希望这可以帮助。

编辑:

您现在的问题与第一个问题完全不同。首先,您必须进行SELECT查询以查看该行是否name存在,例如:

$query = "SELECT FROM $wpdb->terms WHERE name=%s"; // remember to use prepare() after this

如果该行不存在,那么您可以执行INSERT上述操作,如果该行存在,那么您应该进行UPDATE查询:

$query = "UPDATE $wpdb->terms SET slug=%s, term_group=%s WHERE name=%s";

还有INSERT ... ON DUPLICATE KEY UPDATE解决方案来替换上述解决方案,但我对此并不那么有经验。

于 2013-07-16T21:56:55.543 回答