그래서 약간 문제가 있습니다. 나는JQuery 드래그 앤 드롭 정렬 목록
표는 MySQL 데이터베이스에서 채워집니다 ... 드래그를 생성하고 내가이 작업이 대부분의 경우, 카테고리를 주문하는 사용자를 허용하도록되어 내 워드 프레스 플러그인 내에서 목록을 드롭 한 :
$results = $wpdb->get_results($sql);
foreach($results as $result)
{
?>
<tr id="list_item_<?php echo $result->priority_order; ?>" class="list_item">
<td>
<?php echo $result->name; ?>
</td>
<td>
<?php echo $result->priority_order; ?>
</td>
</tr>
<?php
}
그리고 'jquery-ui-sortable'을 사용하여 테이블을 정렬 할 수 있습니다.
$('.list').sortable(
{
items: '.list_item',
opacity: 0.6,
cursor: 'move',
axis: 'y',
update: function()
{
var order = $(this).sortable('serialize') + '&action=update_order';
$.post(ajaxurl, order, function(response)
{
//alert(response);
});
}
});
여기
는 PHP가 새로운 순서로 데이터베이스 갱신하는 데 사용됩니다 :
function save_order()
{
global $wpdb;
$table_name = $wpdb->prefix . "categories";
$sql = "SELECT * FROM ".$table_name." ORDER BY priority_order ASC";
$results = $wpdb->get_results($sql);
$results = parseObjectToArray($results);
$new_order = $_POST["list_item"];
$counter = 0;
foreach($new_order as $v)
{
if(isset($results[$v]["priority_order"]))
{
$update_sql = "UPDATE ".$table_name." SET priority_order='".$counter."' WHERE category_id='".$results[$v]["category_id"]."'";
$wpdb->query($update_sql);
$counter++;
}
}
die();
}
add_action('wp_ajax_update_order','save_order');
// Converts StdObject to regular array
function parseObjectToArray($object)
{
$array = array();
foreach($object as $o)
{
if (is_object($o))
{
$array[] = get_object_vars($o);
}
}
return $array;
}
을
여기에 목록을 드래그 할 수 및 목록을 업데이트하는 내 JQuery와있다
내 문제는 목록이 완벽하게 전나무 시간을 업데이트하는 동안 페이지가 있다고 가정하여 전송되는 다음 직렬화 된 배열입니다. 수동으로 새로 고치지 않았습니다. 이제 잘못 업데이트됩니다. 새 목록과 데이터베이스에서 새로 업데이트 된 목록이 더 이상 동기화되지 않기 때문입니다.
I 업데이트가 필요한 것을 일치하는 배열 인덱스를 사용하고 있지만, 초기 변경 후, 새 목록의 인덱스와 인덱스가 배열없이 혼자 경기에서오고 있기 때문입니다 ...
사람이 있습니까 어떤 아이디어가이 문제를 어떻게 해결할 수 있을까요? 나는 꽤 많이 둘러 보았고, 필자가 발견 한 코드의 대부분은 내 것과 유사하다. 그리고 눈에 띄는 차이점을 발견했다. 각 업데이트 후에 페이지를 새로 고쳐야합니까? 나는 하하, 자신을 다시 한번 대답을 발견