我正在使用jQuery draggable,当draggable元素移动时,我使用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表...所以在draggable element stop
上ajax数据发送到我的脚本并存储在数据库中,update
每次可拖动停止我保留该行并仅更新位于x
的{{1}}和y
值&安培;&安培; slug
具有term_group
name
的{{1}}这会更新,但由于$_POST['id']
是一个静态值,我无法为具有新元素的元素创建新行$term_id = 100
..这是否有意义......它比我想象的要简单得多......我正在尝试做我已经在做的事情,但是当有一个新的$_POST['id']
时我需要动态生成一个$_POST['id']
,如果我手动给行一个term_id为101的话,它的工作方式正是我想要的...
表格看起来像这样......
我试图添加101和silly2 ..然后102 silly3 ..类似的东西,然后当最后两个值x&你改变152& 32次更改但term_id 101次停留且愚蠢2次停留...
这里的事情是我不想创建一个傻,silly2,silly3的新实例...我想覆盖最后两列..
答案 0 :(得分:0)
尝试在sql表定义中使用auto increment。如果您无法修改表定义,则可以再添加一个表并使用它链接数据。
编辑以回答已更改的问题。
在插入新行之前,您需要检查表中是否存在值。
如果存在,则对该行执行更新SQL查询。否则插入新行。
答案 1 :(得分:0)
如果您正在运行标准的Wordpress安装,wp_terms
表始终auto_increment
作为term_id
的默认值,因此您可以删除静态$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解决方案来取代上述解决方案,但我对此并不十分熟悉。