2012-06-01 14 views
1

可以说我有这样一个简单的表:MySQL数据库和按用户首选项排序的值

unique ID | url |订单

唯一的ID是自动生成的,通常情况下,url是必须提交的东西。 但是我怎么安排?

我希望用户能够安排他想要的那些“urls”。

我该如何做到这一点?最后一个插入的项目总是最后一个订单号码,如果我将订单号为5的项目移动到1,则所有项目订单号码都会更改。我想用JavaScript中的某种拖放来实现它,但现在这不是真正的重要内容。

我遇到的问题是PHP方面..改变orded数字。

+0

也许我不明白这里的问题,但如果我是一个用户,并显示一长串URL和订单号码,我不想花费时间拖放它们到一个特定的顺序 – ChrisW

+0

网址只是一个例子...你可以想象它们是一个例子和你的形象想要重新排列它们并将其保存到数据库中。 –

回答

0

我做的正是这一点,并能正常工作。我使用jQuery UI可排序像这样的接口:

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> 
0

你可以有一个下拉菜单,或者决定按什么顺序显示数据的按钮,它可以是升序或降序。然后在你的SQL查询结束它与ORDER BY url DESCORDER BY url ASC

0

你可以很容易地实现这个在jQuery UI中可排序,它会给你一个ID数组,从那里它只是一个做$ .post到你刚刚迭代数组的php页面(因此你知道订单值)更新行并设置新的订单值。 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() 
     }); 
    }