假设我有一个简单的表格:
unique ID | url | order
unique ID
像往常一样自动给出,url
是必须提交的东西。但是我该如何安排命令呢?
我希望用户能够将这些url
安排在他想要的命令中。
我怎样才能做到这一点?最后插入的项目始终具有最后一个订单号,如果我将订单号为 5 的项目移动到 1,则所有项目订单号都会更改。我想在 JavaScript 中通过某种拖放来实现它,但这现在并不是真正的 importat。
我遇到的问题是PHP方面。更改有序号。
我正是这样做的,它工作正常。我使用 jQuery UI Sortable 作为界面,如下所示:
.js:
$(document).ready(function(){
function renumberSortables(){
// Re-number the ordering i the list.
$("ul.sortable").each(function(){
$(this)
.find("li")
.each(function(index){
$(this).find("input.ordering").val(index);
});
});
}
$("ul.sortable").sortable({
opacity: 0.8,
stop: renumberSortables
});
}
html/php:
<ul class="sortable">
<?php foreach($sortables as $index => $sortable){ ?>
<li>
<input class="ordering" type="hidden" name="sortable[<?= $index ?>][ordering]" value="<?= $sortable.ordering ?>">
(Your stuff here…)
</li>
<?php } ?>
</ul>
你可以
有一个下拉菜单或其他东西来决定显示数据的顺序是升序或降序。然后在 SQL 查询中以 ORDER BY url DESC
或ORDER BY url ASC
结束它
你可以非常轻松地在jquery UI中使用可排序来实现这一点,它会按顺序给你一个id数组,从那里它只是一个对你的php页面做一个$.post的情况,它只是迭代数组(因此你知道订单值)更新行并设置新的订单值。
jquery 中的停止函数如下所示:
stop: function(event, ui) {
var ids = [];
ui.item.parent().children().each(function(n, element) {
ids[ids.length] = element.id;
});
$.post("/somelocation", {
orderedids: ids.toString()
} );
}