论坛 编程与开发 其他开发话题 (软件技术的领域实在太广。。。。。。)
|
本版斑竹:招募中... |
MySQL的支持分页浏览的随机排序实现因为看到有个网站上有随机显示作品的功能,我觉得有点用。不过那个网站只是随机的显示了一页,并不能分页浏览。经过测试,CGPAD.COM的作品浏览实现了随机排序的浏览,并且这种随机排序可以采用分页的方式展现。以下是这个问题的解决方案:
如果不分页的话,可以简单的order by rand()来做。因为要分页,所以必须要保存一个随机数种子在session或者cookie中,然后在浏览每个页的时候根据这个随机数种子来排序,这样每次浏览的顺序才会相同。我采用的是请求随机排序浏览时的时间之秒数作为种子,如果是浏览各个分页,则从session中取出保存的种子来生成随机数列。
session[:rand] = Time.now.sec if params[:page] == nil
query_order_by = "rand(#{session[:rand]})"
然后 ... :order => query_order_by,这样就实现了一个完美的支持分页浏览的随机排序。