您还没有登陆到CGPAD.COM   现在登录   注册新用户
搜索 CGPAD.COM
 
 
 
 浏览论坛    搜索论坛    规章制度    帮助  
社区成员: 23570   主题总数: 1374   回复总数: 3307   帖子总数: 4681   论坛跳转:  
 
 
论坛 编程与开发 其他开发话题 (软件技术的领域实在太广。。。。。。) 本版斑竹:招募中...
 
发表新主题
帖子搜索:  
 
MySQL的支持分页浏览的随机排序实现
查看:2121  |  回复:0  |  创建:2008-05-18 19:34:14
 
SPAN (张友邦)
注册: 2008-04-24
积分: 12335 分
等级:
尘世如潮人如水 只叹江湖几人回

因为看到有个网站上有随机显示作品的功能,我觉得有点用。不过那个网站只是随机的显示了一页,并不能分页浏览。经过测试,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,这样就实现了一个完美的支持分页浏览的随机排序。





删除
 
编辑
 
标签:分页   随机排序   rand  
 
附件:请登陆后查看附件内容!
 
声明:CGPAD文章版权属于作者,受法律保护。没有作者书面许可不得转载。
 
没有任何评论
 
 
版权所有 © 2005-2008 CGPAD.COM,湘ICP备07500998号,兼容浏览器:IE6IE7FireFoxOperaSafariChrome
Total Requests: 5275909, Total Visits: 3085116, Processing Time: 38ms,