Я использую плагин под названием nestedSortable
отсортировать порядок списка, с вложенным (ul li
База данных mySQL.
Тем не менее, я не могу сохранить порядок при изменении с помощью этого плагина. Ранее я использовал сортируемый плагин, который сохраняет порядок в базе данных после изменения, но не имеет вложенной опции.
HTML код:
<div id="dnp">
<ul id="sort" class="list-group">
<?php
try
{
$conn = new PDO('mysql:dbname=uwv;host=localhost', 'root', '');
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sqlString = "SELECT * FROM uwv_test1 ORDER BY Question_Order;";
$stmt = $conn->query($sqlString);
$stmt->execute();
while($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
echo "<li id='id_" . $row['QuestionID'] . "' class='list-group-item space'><i class='fa fa-bars fa-lg'></i> ". "<a href='#'>" . $row['Question'] . "</a>/li>";
}
}
catch(PDOException $e)
{
echo $connection->errorCode();
echo $connection->errorInfo();
}
?>
</ul>
</div>
Код jQuery:
$(document).ready(function()
{
$('#sort').nestedSortable({
helper: fixHelper,
handle: '.fa',
containment: 'document',
tolerance: 'move',
cursor: 'move',
revert: 'true',
placeholder: 'placeholder',
connectWith: 'ul#sort, ul ul#sort, #sort',
update: function(){
var order = $('#sort').nestedSortable('serialize');
$.ajax({
type: "GET",
dataType: "JSON",
url: "process-sorting.php",
data: order
});
//$('#info').load("process-sorting.php?"+order);
}
}).disableSelection();
// Return a helper with preserved width of cells
var fixHelper = function(e, ui)
{
ui.children().each(function()
{
$(this).width($(this).width());
});
return ui;
};
});
Код PHP:
$ids = $_GET['id'];
$display_order = 1;
foreach($ids as $id)
{
$db = new PDO('mysql:dbname=uwv;host=localhost', 'root', '');
$stmt = $db->prepare("UPDATE uwv_test1 SET Question_Order = :display_order WHERE QuestionID = :id");
$stmt->bindParam(':id', $id);
$stmt->bindParam(':display_order', $display_order);
$stmt->execute();
$display_order++;
}
Всякий раз, когда я использую плагин jQuery sortable, у меня не возникает проблем с сохранением измененного заказа в базе данных:
$('#sort').sortable({
helper: fixHelper,
handle: '.fa',
containment: 'document',
tolerance: 'move',
cursor: 'move',
revert: 'true',
placeholder: 'placeholder',
connectWith: 'ul#sort, ul ul#sort, #sort',
update: function(){
var order = $('#sort').sortable('serialize');
$.ajax({
type: "GET",
dataType: "JSON",
url: "process-sorting.php",
data: order
});
//$('#info').load("process-sorting.php?"+order);
}
}).disableSelection();
Может ли кто-нибудь помочь мне с этим? Я не очень хорошо объясняю вещи, так что извините, если это не очень хорошо объяснено.
Задача ещё не решена.
Других решений пока нет …