#php #jquery #mysql #database #jquery-ui-sortable
#php #jquery #mysql #База данных #jquery-пользовательский интерфейс-сортируемый
Вопрос:
Я пытаюсь отсортировать изображения, используя:http://jqueryui.com/demos/sortable/display-grid.html А затем каким-то образом отправить недавно отсортированный массив / результаты в базу данных MySQL с использованием PHP?
Мне трудно разобраться в этом (оповещение новичков), поэтому, если кто-нибудь может пролить некоторый свет на это, я буду раздавать hi-5s, как будто завтра не наступит.
Приветствия
Комментарии:
1. Добавьте пример того, как ваши данные в настоящее время хранятся в вашей базе данных.
Ответ №1:
В частности, вам нужно посмотреть на прикрепление события к сортируемой таблице
http://jqueryui.com/demos/sortable/#event-update
и сериализует для получения соответствующего содержимого http://jqueryui.com/demos/sortable/#method-serialize
Редактировать
Это примитивная версия того, что вам нужно сделать.
<script>
$(function() {
var arrayOfIds = [];
$( "#sortable" ).sortable({
update: function(event, ui) {
$.each($(this).sortable('toArray'), function(key, value) {
arrayOfIds.push(value.replace('el-',''))
});
var jqxhr = $.ajax({
url: "order.php?order=" encodeURIComponent(arrayOfIds),
})
.success(function(response) { console.log("success" response ); })
.error(function() { console.log("error"); })
.complete(function() { console.log("complete "); });
}
});
$( "#sortable" ).disableSelection();
});
</script>
Каждому элементу li требуется идентификатор, который может быть понятен вашей базе данных
<li class="ui-state-default" id="el-1">1</li>
«1» в id =»el-1″ должно относиться к идентификатору в таблице вашей базы данных. При изменении порядка срабатывает событие обновления, проходит через новый порядок, захватывает все идентификаторы и передает их в ajax-запрос, который затем может перехватить php-файл. the order.php затем в скрипте разделите числа на «,» и обновите вашу таблицу одно за другим.
например
$itemOrders = explode(',',$_POST['order']);
$sizeOfList = sizeof($itemOrders);for($i=0; $i<$sizeOfList; $i )
{
$itemId = intval($itemOrders[$i]);
$query = "UPDATE your_table_name SET order_no = '".$i."' WHERE id = '".$itemId."' ";
if ($result = $msHandle->query($query))
{
$message = 'success';
}
else
{
$message = 'fail ';
}
}
Комментарии:
1. Привет, спасибо за ответ. я проверил event amp; method, но я все еще немного не понимаю, как на самом деле отправить заказ в базу данных ajax / php / mysql, поскольку я не очень хорошо знаю jquery.
2. Есть ли какая-то особая причина, по которой вам нужно использовать jQuery для этого? Поскольку у меня есть примеры Mootools под рукой.
3. Я предоставил некоторый пример кода. Пожалуйста, имейте в виду, что это всего лишь простая очистка данных, но этого должно быть достаточно, чтобы вы начали.
Ответ №2:
При событии сортировки будет функция обратного вызова, которую вы можете использовать для отправки AJAX-запроса PHP-скрипту, который обновляет базу данных. Представьте себе, что после выполнения действия сортировки (т. Е. перемещения одного элемента по кругу) вы отправляете значения (т. Е. упорядоченный список) в PHP-скрипт, который принимает эти значения и обновляет базу данных. Я предполагаю, что у вас есть опыт работы с MySQL, поскольку вы, похоже, знаете основы проблемы.
Комментарии:
1. Будет ли этот Ajax-запрос выполняться при каждом перемещении элемента или после нескольких перемещений кнопка отправки?
2. @user715105 это зависит от вас, но возможно.