Facebook Sharer
选择您要替换的背景颜色:
【农历新年】背景图片:
个性化设定
 注册  找回密码
查看: 2188|回复: 18
打印 上一主题 下一主题

page system

[复制链接]

31

主题

0

好友

1228

积分

黄金长老

Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8

跳转到指定楼层
1#
发表于 2010-9-13 03:27 PM |只看该作者 |倒序浏览
我在 develop 着一个 system, 是 display ads 的, 一个 ad 有分大和小两种.
1 个大的 = 4 个小的

然后现在要做 paging 咯, 就是说一面只要 display 8 个大的, 或相等数量的小的 (如果大的完了).
大的肯定会先 display 完, 才到小的.

例子:
如果我有 20 大 20 小,
page 1: 8 大
page 2: 8 大
page 3: 4 大 + 16 小
page 4: 4 小

这些都是从 sql 那边拿来的资料.
我知道是如果没有分大小的话, paging 可以用 SQL 里面的 LIMIT 来做,
可是现在的话, 就不知道有什么好方法了.

这些 result 不是 fixed 的, 是 search + filter 后的 result, 所以不能说把他们所属于的 page 存进 database 里面.




收藏收藏0

7

主题

1

好友

5108

积分

一流名嘴

Rank: 12Rank: 12Rank: 12

2#
发表于 2010-9-13 03:37 PM |只看该作者
我在 develop 着一个 system, 是 display ads 的, 一个 ad 有分大和小两种.
1 个大的 = 4 个小的

然后现 ...
~Zero 发表于 2010-9-13 03:27 PM


大小資料先設定个 priority,之後 sql使用 order by 与 limit 即可达到你的要求


回复

使用道具 举报

31

主题

0

好友

1228

积分

黄金长老

Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8

3#
发表于 2010-9-13 03:44 PM |只看该作者
有 priority 了, 可是问题在于怎样 LIMIT?


回复

使用道具 举报

7

主题

1

好友

5108

积分

一流名嘴

Rank: 12Rank: 12Rank: 12

4#
发表于 2010-9-13 03:47 PM |只看该作者
有 priority 了, 可是问题在于怎样 LIMIT?
~Zero 发表于 2010-9-13 03:44 PM



    SELECT * FROM [table] ORDER BY [priority] DESC LIMIT [start], [limit]


回复

使用道具 举报

31

主题

0

好友

1228

积分

黄金长老

Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8

5#
发表于 2010-9-13 03:49 PM |只看该作者
我知道 syntax,

可是就说说吧, 我怎么知道 page 1 要 limit 0, 8?
我怎么知道 page 3 要 limit 16, 20?


回复

使用道具 举报

31

主题

0

好友

1228

积分

黄金长老

Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8

6#
发表于 2010-9-13 04:37 PM |只看该作者
我想到一个办法, 就是每次 search + filter 后, 把 result 和相对应的 page store 进 session 里面, 然后如果他们换 page 的时候就从 session 里面 retrieve 出该 page 的 result, 再从 sql 拿出来.

不知道适合不适合. 不过这是目前为止想到的唯一方法...


回复

使用道具 举报

7

主题

1

好友

5108

积分

一流名嘴

Rank: 12Rank: 12Rank: 12

7#
发表于 2010-9-13 05:26 PM |只看该作者
我知道 syntax,

可是就说说吧, 我怎么知道 page 1 要 limit 0, 8?
我怎么知道 page 3 要 limit 16, 20?
~Zero 发表于 2010-9-13 03:49 PM


已知条件
1. A = 1, B = A * 4
2. A 与 B 各 20
3. 限制 A 的數量 = 8

接下來對 programmer 來說就是運算的部分,之後即可得出 [start] 和 [limit] 了


回复

使用道具 举报

46

主题

6

好友

6456

积分

百变名嘴

Rank: 13Rank: 13Rank: 13Rank: 13

8#
发表于 2010-9-13 10:00 PM |只看该作者
我的方法:

let x = 18 as  total item.
let y = 8 as total item display per page.
let p = floor(x / y) as total page.
let o = (current page - 1) *  y

有更好的方式就分享吧。


回复

使用道具 举报

7

主题

1

好友

5108

积分

一流名嘴

Rank: 12Rank: 12Rank: 12

9#
发表于 2010-9-13 11:17 PM |只看该作者
我的方法:

let x = 18 as  total item.
let y = 8 as total item display per page.
let p = floor(x ...
宅男-兜着走 发表于 2010-9-13 10:00 PM



這是正常的分頁方式,因為樓主的有數量上的不同,所以驗算方式就有些差别


回复

使用道具 举报

46

主题

6

好友

6456

积分

百变名嘴

Rank: 13Rank: 13Rank: 13Rank: 13

10#
发表于 2010-9-13 11:25 PM |只看该作者
回复 9# Super-Tomato

哦哦~抱歉我没看清楚他的问题。 也看不懂。
就以为他要的只是普通的。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

JBTALKS.CC |联系我们 |隐私政策 |Share

GMT+8, 2024-11-25 04:39 PM , Processed in 0.110054 second(s), 27 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

Ultra High-performance Dedicated Server powered by iCore Technology Sdn. Bhd.
Domain Registration | Web Hosting | Email Hosting | Forum Hosting | ECShop Hosting | Dedicated Server | Colocation Services
本论坛言论纯属发表者个人意见,与本论坛立场无关
Copyright © 2003-2012 JBTALKS.CC All Rights Reserved
合作联盟网站:
JBTALKS 马来西亚中文论坛 | JBTALKS我的空间 | ICORE TECHNOLOGY SDN. BHD.
回顶部