连个分页都写不好,看来做程序员是没希望了??

2015-07-26 19:01:17 +08:00
 darkmatter
一个分页功能折腾了两天都没写好
6965 次点击
所在节点    程序员
62 条回复
zonghua
2015-07-26 21:00:13 +08:00
@breeswish 不是模型那层输出list和count就行吗?我都这么干。
lincanbin
2015-07-26 21:29:19 +08:00
@loading 我觉得这里的分页应该是指分页的导航输出。




https://github.com/lincanbin/Carbon-Forum/blob/master/common.php#L374

我这里写了一个,如果考虑的情况比较多,不是像V2EX这样简单的上一页下一页,写起来还是挺繁琐的。
laoyuan
2015-07-26 21:50:13 +08:00
分页我每隔一两年就重新写一次
powtop
2015-07-26 21:53:26 +08:00
@laoyuan 今晚还直播不
yakczh
2015-07-26 21:53:39 +08:00
google的那种分页,就是当前页在中间的样式
gseven0312
2015-07-26 22:33:18 +08:00
别灰心,没有人能一步到位的,慢慢来
Tink
2015-07-26 22:34:05 +08:00
嗯嗯,我也不会写,都是用框架自带的
iyaozhen
2015-07-26 22:39:50 +08:00
@likai PHP 时间转换不是挺方便嘛?
jyjmrlk
2015-07-26 22:44:44 +08:00
scourgen
2015-07-26 22:46:06 +08:00
分页还真不是简单能写好的,简直是一个细思恐极的话题。

1.如何自动根据查询语句去生成一个 count sql,算出有多少条信息,需要分多少页?
2.有没有不用计算一共有多少条也能分页的办法?
3.如何保证「1」的语句在不同的情况下都能正常运行?
4.如果你用了 distinct 的话,如何保证效率?
5.如果查询语句里有 union 之类的操作的话,该怎么办?
6.如果信息刷新很频繁,如何解决「第x页的最后一条内容被顶到x+1页的第一条」这个问题?
7.如何在实现以上几点的情况下做cache?
8.如何在实现「7」的基础上尽量提高命中率?
bombless
2015-07-26 23:03:26 +08:00
分页是有套路的,任何人熟悉一下都能写好,要想锻炼自己完全可以把精力放在更有创造力的事情上,分页的时候直接按照套路来就可以了。
gzxultra
2015-07-26 23:04:35 +08:00
我以为是内核kernel的分页。。。果然最近kernel源码看多了。。。被拖走
zjqzxc
2015-07-27 00:43:22 +08:00
@scourgen 貌似6的问题大多数人都避而不谈。。被顶到下一页第一个问题不大,一会儿工夫被顶到下一页最后一个这种情况应该就比较悲剧了。
TangMonk
2015-07-27 07:07:14 +08:00
@scourgen 第6点求解决方案,如果是android或者ios的话那只有id判断了
msg7086
2015-07-27 08:22:01 +08:00
gem install will_paginate
vikeria
2015-07-27 08:28:08 +08:00
喵的,我第一反应是操作系统内存管理的分页,我愣了一下,卧槽,我好像也没写过,当即伤感了一会……
Ouyangan
2015-07-27 09:32:32 +08:00
哈哈写了三天,能用了...
cheng007
2015-07-27 09:33:22 +08:00
@vikeria 哈哈,我的第一感觉也是,操作系统的内存管理的分页,话说这玩意,虚拟内存地址到物理地址的映射
我也没写过,只看过
aivier
2015-07-27 09:40:50 +08:00
嗯,作为一个前端不会分页查询好像也没什么不对啊 =_=
ZHenJ
2015-07-27 10:10:17 +08:00
我的分页是用地址栏参数导航的。。。比你更菜,放心

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/208473

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX