Я храню некоторые данные из 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-элемента …
<div class="MYELEMENT draggable" id="element"></div>
этот идентификатор хранится внутри переменной $name
выше.
Моя таблица выглядит так:
|term_id| |name| |slug| |term_group| |100| |element| |X Value here| |Y value here|
вы видите в функции обновления I целевого slug
и term_group
и обновляете их с помощью значения ajax. term_group
WHERE
: $_POST['id']
<— это element
в моей таблице .. Все хорошо … НО
Что делать, если у меня есть новый $_POST['id']
?
<div class="MYELEMENT draggable" id="element2"></div>// notice the ID changes
Идентификатор изменяется и переходит в мое значение 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();