|登录 |注册

查看: 2584|回复: 18
打印 上一主题 下一主题

page system

[复制链接]
~Zero
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 里面.
Super-Tomato
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 即可达到你的要求
~Zero
2010-9-13 03:44 PM
有 priority 了, 可是问题在于怎样 LIMIT?
Super-Tomato
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]
~Zero
2010-9-13 03:49 PM
我知道 syntax,

可是就说说吧, 我怎么知道 page 1 要 limit 0, 8?
我怎么知道 page 3 要 limit 16, 20?
~Zero
2010-9-13 04:37 PM
我想到一个办法, 就是每次 search + filter 后, 把 result 和相对应的 page store 进 session 里面, 然后如果他们换 page 的时候就从 session 里面 retrieve 出该 page 的 result, 再从 sql 拿出来.

不知道适合不适合. 不过这是目前为止想到的唯一方法...
Super-Tomato
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] 了
宅男-兜着走
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

有更好的方式就分享吧。
Super-Tomato
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



這是正常的分頁方式,因為樓主的有數量上的不同,所以驗算方式就有些差别
宅男-兜着走
2010-9-13 11:25 PM
回复 9# Super-Tomato

哦哦~抱歉我没看清楚他的问题。 也看不懂。
就以为他要的只是普通的。
您需要登录后才可以回帖 登录 | 注册

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

GMT+8, 2026-1-1 10:29 AM , Processed in 0.093511 second(s), 26 queries .

Powered by Discuz! X2.5 © 2001-2012 Comsenz Inc.

本论坛言论纯属发表者个人意见,与本论坛立场无关
Copyright © 2003-2012 JBTALKS.CC All Rights Reserved

Dedicated Server powered by iCore Technology Sdn. Bhd.

合作联盟网站:
JBTALKS 马来西亚中文论坛 | JBTALKS我的空间 | ICORE TECHNOLOGY SDN. BHD.
回顶部